JavaScript удаляет объекты из списка на основе массива значений ключей - PullRequest
2 голосов
/ 24 марта 2020

Я пытаюсь удалить объекты из массива на основе их ключей, передавая массив ключей.

Например, у меня есть массив объектов с именем "clients":

[
  { id: 1, name: Tim },
  { id: 2, name: Bob },
  { id: 3, name: Joe },
]

Затем у меня есть другой массив с ключами, называемыми "ids":

[1,3]

После того, как я отфильтрую его, у меня останется просто:

[
  { id: 2, name: Bob },
]

Пока я Я пробовал это, но он возвращает все:

filteredClients = clients.filter(n.id => !ids.includes(n.id)

Ответы [ 3 ]

1 голос
/ 24 марта 2020

Используйте n в вашем обратном вызове вместо n.id. В этом случае n будет принимать значение каждого объекта массива clients на каждой итерации. Подробнее здесь .

const clients = [
     {id:1,name:"Tim"},
     {id:2,name:"Bob"},
     {id:3,name:"Joe"}
];

const ids = [1, 3];

var filteredClients = clients.filter(n => !ids.includes(n.id));

console.log(filteredClients);
0 голосов
/ 24 марта 2020

Начальная строка кода:

filteredClients = clients.filter(n.id => !ids.includes(n.id)

Обновленная строка кода должна выглядеть следующим образом:

filteredClients = clients.filter(n => !ids.includes(n.id))

Здесь вместо n.id используйте n для обратного вызова в вашей лямбда-функции. Так как в ES6 значение каждого объекта берется в каждой итерации данного массива клиентов

Для получения дополнительной информации здесь

0 голосов
/ 24 марта 2020

let arr = [
     {id:1,name:'Tim'},
     {id:2,name:'Bob'},
     {id:3,name:'Joe'},
]
let con = [1,3]


let updatedArr = arr.find((x)=> !con.includes(x.id));
console.log(updatedArr);

Мы можем использовать .find вместе с включенной функцией массива для фильтрации нежелательных объектов из вашего массива

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...