JQUERY - удалить массив из многомерного массива с ключом - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь удалить массив в многомерном массиве, если идентификатор совпадает с указанным.

var test_arr = [{"name":"qqq", "city":"it","id":"123456"}, {"name":"ggg", "city":"uk","id":"777456"}];

var result = test_arr.filter(function(v,i) {  
     if (v[0] === '123456'){ test_arr.splice(i,1) } 
}); 

//alert( test_arr[0].id)
alert(result)

http://jsfiddle.net/ofLg0vq5/2/

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

@ Ник дал решение без .splice, но Если по какой-либо причине вы все еще хотите воспользоваться решением .splice, попробуйте следующий код:

Вы проверяли id неправильно, в приведенном ниже решении будут удалены все объекты с id - 123456

http://jsfiddle.net/u0qshcvf/2/

0 голосов
/ 17 января 2019

Проблема с вашим текущим решением заключается в том, что вы не используете .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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...