-
慕容708150
reduce您可以在回调函数中使用并检查arr includes对象是否id处于迭代状态。如果是这样,则将元素添加到累加器数组中var arr = ["a", "b", "d"]var arr2 = [{ id: "a", value: 1}, { id: "b", value: 2}, { id: "c", value: 3}];const newData = arr2.reduce((acc, curr) => { if (arr.includes(curr.id)) { acc.push(curr) } return acc;}, []);console.log(newData)
-
Helenr
使用 filter、reduce 和 include 的速度几乎是简单使用循环的两倍。为了引导您完成它,它所做的就是检查第二个数组中的每个元素并检查它的 id 属性是否在第一个数组中,如果是,它会克隆它。另外,为了将来参考,该标题写得不好。一个更好的标题是“如何根据可能的 ID 属性列表过滤对象数组”var arr= ["a", "b", "d"]var arr2=[{id:"a", value:1},{id:"b", value:2}, {id:"c", value:3}]let clone = []for(let i = 0;i < arr2.length;i++){ for(let j = 0;j < arr.length; j++) if(arr2[i].id === arr[j]) clone.push(arr2[j])}console.log(clone)
-
慕妹3146593
这应该做到var arr= ["a", "b", "d"]var arr2=[{id:"a", value:1},{id:"b", value:2}, {id:"c", value:3}]const filteredArray = arr2.filter(obj => { return arr.includes(obj.id)})
-
哔哔one
如果 arr 项目总是字符串,你可以这样做:var arr = ["a", "b", "d"];var arr2 = [{id:"a", value:1},{id:"b", value:2}, {id:"c", value:3}];let str = arr.join('')let filtered = arr2.filter(x => str.includes(x.id));console.log(filtered)