Чтобы изменить массив, используйте splice или delete . Вы можете сделать функцию удаления элемента несколько более общей, если для изменения массива требуются параметры, свойство для поиска и соответствующее значение, например
let data = [{id:'1', foo:'foo'},
{id:'2', foo:'bar'},
{id:'3', foo:'fum'},
{id:'4', foo:'fee'}
];
function deleteElementByPropAndValue(array, prop, value) {
for (var i=array.length; i; ) {
if (array[--i][prop] == value) {
array.splice(i, 1);
}
}
}
console.log(data);
deleteElementByPropAndValue(data, 'id', '3');
console.log(data);
deleteElementByPropAndValue(data, 'foo', 'fee');
console.log(data);
Вам следует подумать, использовать ли ==
или ===
в сравнении на равенство.
splice сократит массив, следовательно, будет работать в обратном направлении через индексы. Вы также можете использовать delete array[index]
, который не сократит массив, но оставит недостающие элементы в удаленных индексах. Это действительно не имеет значения, если вы используете встроенные методы для итерации по массиву, так как в основном они пропускают отсутствующие элементы, но некоторые этого не делают. И это может иметь значение для других функций, которые не ожидают разреженных массивов.