У меня есть массив объектов, таких как:
var myArray = [
{field: 'id', operator: 'eq', value: id},
{field: 'cStatus', operator: 'eq', value: cStatus},
{field: 'money', operator: 'eq', value: money}
];
Как мне удалить конкретный на основе его свойства?
Например, как бы я удалил объект массива с 'money' в качестве свойства поля?
javascript
jquery
arrays
object
properties
imperium2335
источник
источник
filter()
доступно только для Internet Explorer 9+filter()
создает новый массив, что хорошо, если вы можете переназначить переменную и знать, что нет других областей кода, которые имеют ссылки на нее. Это не сработает, если вам нужно изменить исходный объект массива.Итерируйте по массиву и
splice
выводите те, которые вам не нужны. Для более легкого использования итерируйте в обратном направлении, чтобы вам не приходилось учитывать динамический характер массива:источник
Скажем, вы хотите удалить второй объект по его свойству поля.
С ES6 это так просто.
источник
splice
изменяет исходный массив, поэтому возвращаемое значение - это элемент, который был удален, но если вы в следующий раз посмотрите наmyArray
элемент, он будет отсутствовать.Вы можете использовать findIndex lodash, чтобы получить индекс конкретного элемента, а затем соединить его.
Обновить
Вы также можете использовать find6dex () ES6
источник
myArray
здесь массив объектов.Вот еще один вариант, используя jQuery grep. Передайте
true
в качестве третьего параметра, чтобы grep удалял элементы, которые соответствуют вашей функции.Если вы уже используете jQuery, тогда никакая подкладка не требуется, что может быть полезно в отличие от использования
Array.filter
.источник
В ES6 всего одна строчка.
:)
источник
Ниже приведен код, если вы не используете jQuery. демонстрация
Вы также можете использовать библиотеку подчеркивания, которая имеет много функций.
Underscore - это библиотека утилитарных поясов для JavaScript, которая обеспечивает большую поддержку функционального программирования.
источник
Элемент - это объект в массиве. 3-й параметр
true
означает, что вернет массив элементов, который не соответствует логике вашей функции,false
означает, что вернет массив элементов, который не соответствует логике вашей функции.источник
На основе приведенных выше комментариев приведен код удаления объекта на основе имени и значения ключа.
источник
Использование библиотеки lodash :
источник
Решение jAndy, вероятно, лучше, но если вы не можете полагаться на фильтр, вы можете сделать что-то вроде:
источник
Используя библиотеку lodash, все просто
источник