Дополнительно
Удаление объекта из массива с помощью JavaScript
Как удалить объект из массива?
Я хочу удалить объект с именем Kristian
из массива SomeArray
. Например:
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
Я хочу добиться:
someArray = [{name:"John", lines:"1,19,26,96"}];
495
20
Вы можете использовать несколько методов для удаления элемента (элементов) из массива:
Если вы хотите удалить элемент в позиции
x
, используйте:Или
Ответ на комментарий от @chill182: вы можете удалить один или несколько элементов из массива с помощью
Array.filter
, илиArray.splice
в сочетании сArray.findIndex
(см. MDN), например.Я рекомендую использовать underscore.js или sugar.js для общей задачи:
в большинстве проектов, имея набор вспомогательных методов, предоставляемых библиотеками как это весьма полезно.
Чистым решением было бы использование
Array.filter
:Проблема в том, что он не работает на IE < 9. Однако вы можете включить код из библиотеки Javascript (например, underscore.js), который реализует это для любого браузера.
Как насчет этого?
Вашу "массив" и как показали недопустимый синтаксис JavaScript. Фигурные скобки
{}
для объектов с пары имени и значения свойства, но квадратные скобки[]
для массивов - вот так:В этом случае, вы можете использовать [
.соединения (метод)
] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice), чтобы удалить элемент. Чтобы удалить первый элемент (индекс 0), сказать:Если вы Don'т знаю индекса, но для поиска по массиву, чтобы найти элемент с именем "Кристиан", чтобы удалить можно так:
Редактировать: я просто заметил, что ваш вопрос помечен с "помощью jQuery" и, таким образом, вы могли бы попробовать
$.команда grep()
метод:ES2015
Он будет удалить Джон!
Вы могли бы использовать массив.фильтр().
например
Стрелочные функции:
Я сделал динамический функция принимает массив объектов, ключ и значение и возвращает тот же массив после удаления нужного объекта:
Полный пример: [демо][1]
Это функция, которая работает для меня:
Вы также можете попробовать что-то вроде этого:
Используйте функцию splice для массивов. Укажите позицию начального элемента и длину подпоследовательности, которую вы хотите удалить.
Голосовать за UndercoreJS для простой работы с массивами.
[_.без()][2] функция помогает удалить элемент:
[2]: http://underscorejs.org/#without и"_.без усилителя; amp;#40;)"и
С функцией Эс 6 стрелка
Хотя это, наверное, не подходит для этой ситуации я узнала на днях, что вы можете также использовать "удалить" ключевое слово, чтобы удалить элемент из массива, если вы Don'т необходимости изменить размер массива, например
Этот ответ
не работает для нескольких записей выполнению условия. Если у вас есть два таких последовательных записей, только первые один удаляется, а другой пропущен. Вы должны использовать:
вместо .
Простым решением было бы создать карту, которая хранит индексы для каждого объекта по имени, как это:
Там, кажется, ошибка в вашем синтаксисе массива так полагаю вы имеете в виду массив, в отличие от объекта, массив.соединения является вашим другом здесь:
Вы можете использовать Карта функция.
Если вы хотите удалить все вхождения заданного объекта (в зависимости от некоторого условия), то используйте способ соединения JavaScript-код внутри цикла.
С удалением объекта не влияет на длину массива, убедитесь, чтобы уменьшить счетчик на один шаг, так что проверить длина остается неизменной.
Приведенный выше фрагмент кода удаляет все объекты с возрастом свыше 20.