4 回答

TA貢獻1831條經(jīng)驗 獲得超4個贊
reduce您可以在回調函數(shù)中使用并檢查arr includes對象是否id處于迭代狀態(tài)。如果是這樣,則將元素添加到累加器數(shù)組中
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)

TA貢獻1780條經(jīng)驗 獲得超4個贊
使用 filter、reduce 和 include 的速度幾乎是簡單使用循環(huán)的兩倍。為了引導您完成它,它所做的就是檢查第二個數(shù)組中的每個元素并檢查它的 id 屬性是否在第一個數(shù)組中,如果是,它會克隆它。另外,為了將來參考,該標題寫得不好。一個更好的標題是“如何根據(jù)可能的 ID 屬性列表過濾對象數(shù)組”
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)

TA貢獻1820條經(jīng)驗 獲得超9個贊
這應該做到
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)
})

TA貢獻1854條經(jīng)驗 獲得超8個贊
如果 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)
添加回答
舉報