Проблема с вашим текущим решением заключается в том, что вы не используете .filter
правильно. .filter
ожидает, что переданная им функция вернет boolean
. Если возвращается true
, текущий элемент будет сохранен во вновь созданном массиве. Если это false
, текущий элемент будет опущен. Таким образом, вместо попытки удалить элемент из test_arr
с помощью .splice
, используйте .filter
, чтобы решить, что остается, а что удаляется.
Также обратите внимание, что в вашем примере v
относится к данному элементу (конкретному объекту) в вашем test_array
. Таким образом, вам не нужно указывать индекс 0
вашего объекта, скорее вам нужно получить id
текущего объекта.
var test_arr = [{"name":"qqq", "city":"it","id":"123456"}, {"name":"ggg", "city":"uk","id":"777456"}];
test_arr = test_arr.filter(function(elem) {
return elem.id !== '123456';
});
console.log(test_arr); // [{"name": "ggg", "city": "uk", "id": "777456"}]
Если вы хотите «более чистое» решение, вы можете использовать функцию стрелки с разрушающим назначением :
test_arr = test_arr.filter(({id}) => id !== '123456'); // [{"name": "ggg", "city": "uk", "id": "777456"}]
var test_arr = [{"name":"qqq", "city":"it","id":"123456"}, {"name":"ggg", "city":"uk","id":"777456"}];
test_arr = test_arr.filter(({id}) => id !== '123456'); // [{"name": "ggg", "city": "uk", "id": "777456"}]
console.log(test_arr);