比较对象数组和单值数组

3
我有两个数组。一个填充了对象,另一个填充了值。请看下面的代码:
const data = [
   {id: 1, name: 'ben'},
   {id: 2, name: 'ben'}, 
   {id: 3, name: 'ben'}, 
   {id: 4, name: 'ben'}
];
const ids = [1,3,4,5]

我希望从数据数组中仅选择 id 属性与ids数组中任何一个值匹配的对象。
我应该如何最好地处理?
提前感谢。
4个回答

4

这里有一段可能会有帮助的代码片段。

const data = [{id:1, name:'ben'},{id:2, name:'ben'}, {id:3, name:'ben'}, {id:4, name:'ben'}];
const ids = [1,3,4,5];

const newData = data.filter(chunk => ids.includes(chunk.id));
console.log("Filtered Data", newData);


1
最简单的方法是使用数组 filter 函数实现:

const data = [{id:1, name:'ben'},{id:2, name:'ben'}, {id:3, name:'ben'}, {id:4, name:'ben'}];
const ids = [1, 3, 4, 5];

const result = data.filter(({id}) => ids.includes(id));
console.log(result);


0

您可以使用Array.prototype.filter来过滤初始数组,并使用Array.prototype.includes来排除不匹配的实体:

const data = [
  { id: 1, name: "ben" },
  { id: 2, name: "ben" },
  { id: 3, name: "ben" },
  { id: 4, name: "ben" }
];
const ids = [1, 3, 4, 5];

const filteredData = data.filter(dataItem => ids.includes(dataItem.id));
console.log(filteredData); // [{"id":1,"name":"ben"},{"id":3,"name":"ben"},{"id":4,"name":"ben"}] 

0
作为另一种方法,您可以在filter方法中使用放置在some方法内的代码:
data.filter(chunk => ids.some(s => s == chunk.id));

一个例子:

const data = [{id:1, name:'ben'},{id:2, name:'ben'}, {id:3, name:'ben'}, {id:4, name:'ben'}];
const ids = [1,3,4,5];

const newData = data.filter(chunk => ids.some(s => s== chunk.id));
console.log("Filtered Data", newData);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接