Для проектов на языках C # и VB нам не нужно импортировать Directory.Build.props вручную или принудительно вызывать его перед другим импортом.
blockquote>При создании нового проекта (C # или VB) в VS, откройте его файл proj, и мы найдем такой формат:
... ... Каждый раз при создании нового C # или VB Project, верхняя строка в узле
-
Import project="Microsoft.Common.props"
, и мы можем найти предложение из этого документа :При запуске MSBuild
Microsoft.Common.props
ищет в вашей структуре каталогов файлDirectory.Build.props
(иMicrosoft.Common.targets looks for Directory.Build.targets
). Если он находит его, он импортирует свойство.Так что в visual studio нам не нужно форсировать его перед другим импортом. Он всегда вызывается после
import Microsoft.Common.props
, и, посколькуimport Microsoft.Common.props
всегда является первой строкой узла проекта по умолчанию, Directory. Build.Targets всегда неявно импортируется сразу после Microsoft.Common.props и раньше других.Примечание. Эта функция поддерживает только C # и VB, поскольку только эти два типа проектов будут импортировать файл Microsoft.Common.Props в файл proj.
А для других типов проектов, таких как .mproj или .vcxproj (C ++), эта функция (Directory.Build.props) пока не поддерживается.
blockquote>Таким образом, Directory.Build.Targets или .props такой же, как и любые пользовательские .props. Это не имеет значения между Directory.Build.Targets и anyName.props.
Таким образом, чтобы прочитать значение в нем, мы должны использовать
import project
, чтобы вызвать его вручную. И именно поэтому сборка не может быть успешной, пока вы не раскомментируете строку :
Хорошо splice
работает:
var arr = [{id:1,name:'serdar'}];
arr.splice(0,1);
// []
НЕ используйте оператор delete
для массивов.
Но может быть, вам нужно что-то подобное?
var removeByAttr = function(arr, attr, value){
var i = arr.length;
while(i--){
if( arr[i]
&& arr[i].hasOwnProperty(attr)
&& (arguments.length > 2 && arr[i][attr] === value ) ){
arr.splice(i,1);
}
}
return arr;
}
Просто пример ниже.
var arr = [{id:1,name:'serdar'}, {id:2,name:'alfalfa'},{id:3,name:'joe'}];
removeByAttr(arr, 'id', 1);
// [{id:2,name:'alfalfa'}, {id:3,name:'joe'}]
removeByAttr(arr, 'name', 'joe');
// [{id:2,name:'alfalfa'}]
у нас есть массив объектов, мы хотим удалить один объект с помощью только идентификационное свойство
var apps = [
{id:34,name:'My App',another:'thing'},
{id:37,name:'My New App',another:'things'
}];
, получают индекс объекта с id:37
var removeIndex = apps.map(function(item) { return item.id; }).indexOf(37);
// remove object
apps.splice(removeIndex, 1);
Использовать ключевое слово удаления.
delete obj[1];
РЕДАКТИРОВАТЬ: см .: Удаление элементов массива в JavaScript - delete vs splice delete отменит определение смещения, но не удалит запись полностью. Сплайс будет правильным, как сказал Дэвид.
delete obj[1];
Обратите внимание, что это не изменит индексы массива. Любые элементы массива, которые вы удалите, останутся «слотами», содержащими undefined
.
Если это последний элемент в массиве, вы можете сделать obj.pop()
Вы можете использовать либо метод splice ()
, либо оператор delete
.
Основное отличие состоит в том, что при удалении элемента массива с помощью оператора delete
длина массива не изменяется, даже если вы удаляете последний элемент массива. С другой стороны, метод splice ()
сдвигает все элементы так, что на месте удаленного элемента не остается дыр.
Пример использования оператора delete
:
var trees = ["redwood", "bay", "cedar", "oak", "maple"];
delete trees[3];
if (3 in trees) {
// this does not get executed
}
console.log(trees.length); // 5
console.log(trees); // ["redwood", "bay", "cedar", undefined, "maple"]
Пример использования метода splice ()
:
var trees = ["redwood", "bay", "cedar", "oak", "maple"];
trees.splice(3, 1);
console.log(trees.length); // 4
console.log(trees); // ["redwood", "bay", "cedar", "maple"]
Если вы знаете индекс объекта в массиве, вы можете использовать splice (), как уже упоминалось другими, например:
var removedObject = myArray.splice(index,1);
removedObject = null;
Если вы не знаете индекс, вам нужно найти его в массиве , то есть:
for (var n = 0 ; n < myArray.length ; n++) {
if (myArray[n].name == 'serdar') {
var removedObject = myArray.splice(n,1);
removedObject = null;
break;
}
}
Марсело
Используйте метод соединения .
(По крайней мере, я предполагаю, что это ответ, вы говорите, что у вас есть объект , но код, который вы даете, просто создает две переменные, и нет никаких признаков того, как создается массив)