JQuery/Javascript удаление объекта из массива объектов
У меня есть массив объектов, который выглядит так:
[
[0]{"asin": "1234",
"title: "Test"},
[1] {"asin": "123fef4",
"title: "aaaaaaa"},
[2] {"asin": "testtet",
"title: "testt123"},
]
Добавление элементов в массив работает как шарм, и вот код:
items.push(
{
"asin": "1234",
"title": "test"
});
Эта часть работает хорошо... Теперь вот часть, где мне нужно удалить элементы из массива по свойству ASIN внутри него...
У меня есть функция, которая выглядит так:
function remove(array, element) {
const index = array.indexOf(element);
array.splice(index, 1);
console.log("Removed element: " + element);
}
Как я вызываю функцию удаления:
remove(items, "1234");
Это удаляет элемент из списка, но не тот, который я хочу.. Я проверил, когда я передаю значение 1234, элемент со значением asin 1234 остается в массиве...
Что здесь может быть не так?:/
3 ответа
Решение
Вы не можете сопоставить строку с объектом. Используйте findIndex, как показано ниже, и используйте возвращенный индекс.
function remove(array, element) {
const index = array.findIndex(e => e.asin === element);
array.splice(index, 1);
console.log("Removed element: " + element);
}
Вы можете расширить свою функцию удаления:
function remove(array, key, value) {
const index = array.findIndex(el => (el[key] || el) === value);
array.splice(index, 1);
console.log("Removed: " + index);
}
Так что вы можете сделать
remove(items, "asin", "1234");
Попробуйте следующее:
var arr =[
{"asin": "1234",
"title": "Test"},
{"asin": "123fef4",
"title": "aaaaaaa"},
{"asin": "testtet",
"title": "testt123"},
];
function remove(arr, val){
var index = arr.findIndex((o)=> o.asin === val);
if(index != 1)
arr.splice(index, 1);
}
remove(arr, "1234");
console.log(arr);