JavaScript 根据键值数组从列表中删除对象

JavaScript removes objects from list based on an array of key values

我试图通过传入一个键数组来根据对象的键从数组中删除对象。

例如,我有一个名为 "clients" 的对象数组:

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

然后我有另一个数组,其中的键名为 "ids":

[1,3]

过滤后,我应该只剩下:

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

到目前为止,我已经试过了,但它 returns 一切:

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

在回调中使用 n 而不是 n.id。在这种情况下,n 将在每次迭代中获取 clients 数组中每个对象的值。更多信息 here.

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);

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 和数组的 includes 函数来过滤掉数组中不需要的对象

初始代码行:

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

更新后的代码行应该是:

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

此处不使用 n.id,而是在您的 lambda 函数中使用 n 进行回调。在 ES6 中,每个对象的值在给定客户端数组的每次迭代中都由 n 获取

更多信息