Как я удаляю объект из массива с JavaScript?

«Находясь в Visual Studio»

Для проектов на языках C # и VB нам не нужно импортировать Directory.Build.props вручную или принудительно вызывать его перед другим импортом.

blockquote>

При создании нового проекта (C # или VB) в VS, откройте его файл proj, и мы найдем такой формат:



  
  
    ...
  
  
    ...
  
  
 

Каждый раз при создании нового C # или VB Project, верхняя строка в узле - Import project="Microsoft.Common.props", и мы можем найти предложение из этого документа :

При запуске MSBuild Microsoft.Common.props ищет в вашей структуре каталогов файл Directory.Build.propsMicrosoft.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, чтобы вызвать его вручную. И именно поэтому сборка не может быть успешной, пока вы не раскомментируете строку :

53
задан Daniel Vassallo 7 August 2010 в 05:47
поделиться

8 ответов

Хорошо 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'}]
151
ответ дан 7 November 2019 в 08:14
поделиться

у нас есть массив объектов, мы хотим удалить один объект с помощью только идентификационное свойство

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);
0
ответ дан 7 November 2019 в 08:14
поделиться

Использовать ключевое слово удаления.

delete obj[1];

РЕДАКТИРОВАТЬ: см .: Удаление элементов массива в JavaScript - delete vs splice delete отменит определение смещения, но не удалит запись полностью. Сплайс будет правильным, как сказал Дэвид.

0
ответ дан 7 November 2019 в 08:14
поделиться
delete obj[1];

Обратите внимание, что это не изменит индексы массива. Любые элементы массива, которые вы удалите, останутся «слотами», содержащими undefined .

0
ответ дан 7 November 2019 в 08:14
поделиться

Если это последний элемент в массиве, вы можете сделать obj.pop()

-1
ответ дан 7 November 2019 в 08:14
поделиться

Вы можете использовать либо метод 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"]
23
ответ дан 7 November 2019 в 08:14
поделиться

Если вы знаете индекс объекта в массиве, вы можете использовать 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;
    }
}

Марсело

5
ответ дан 7 November 2019 в 08:14
поделиться

Используйте метод соединения .

(По крайней мере, я предполагаю, что это ответ, вы говорите, что у вас есть объект , но код, который вы даете, просто создает две переменные, и нет никаких признаков того, как создается массив)

0
ответ дан 7 November 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: