3 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
您正在以我將要說(shuō)的相反方式進(jìn)行操作。您需要檢查 myArr2 中的每個(gè)項(xiàng)目是否具有列表數(shù)組中存在的狀態(tài)。你可以這樣做 -
正確的代碼 -
let myArr2 = [
{
id: "1",
language: "portuguese",
status: "first"
},
{
id: "2",
language: "portuguese",
status: "first"
},
{
id: "3",
language: "portuguese",
status: "second"
},
{
id: "4",
language: "portuguese",
status: "third"
},
{
id: "5",
language: "portuguese",
status: "second"
},
];
const list = [ "first", "third" ]
myArr2 = myArr2.filter(item => list.includes(item.status))
console.log(myArr2)
你的方法有誤
Object.entries(list).forEach(status => {
myArr2.filter(item => {
if(item.status === status){
return item
}
})
})
在上述方法中,您將遍歷列表中的第一個(gè)元素(即first)。因此,它將過(guò)濾掉所有myArr2狀態(tài)不為第一的項(xiàng)目。
在下一次迭代中,您將檢查列表中的第二個(gè)元素(即second)。所以,現(xiàn)在它會(huì)進(jìn)一步過(guò)濾掉所有myArr2狀態(tài)不為的項(xiàng)目second。由于沒(méi)有元素同時(shí)具有 first 和 second 的狀態(tài),因此您的代碼可能會(huì)將結(jié)果數(shù)組作為空數(shù)組返回。
注意:您需要將返回的新數(shù)組分配myArr2給某個(gè)變量。該filter方法不會(huì)就地過(guò)濾掉元素。因此,由于您還沒(méi)有這樣做,如果您嘗試通過(guò)控制臺(tái)日志記錄來(lái)檢查它,您的代碼可能會(huì)為您提供原始數(shù)組本身。
filter() 您可以在此處閱讀更多信息。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
你可以過(guò)濾數(shù)組。如果元素是您的過(guò)濾器列表的一部分(indexOf != -1),請(qǐng)檢查此項(xiàng)。
function filterArray(arr, list) {
return arr.filter(el => {
return list.indexOf(el.status)!=-1;
});
}
const myArr2 = [
{
id: "1",
language: "portuguese",
status: "first"
},
{
id: "2",
language: "portuguese",
status: "first"
},
{
id: "3",
language: "portuguese",
status: "second"
},
{
id: "4",
language: "portuguese",
status: "third"
},
{
id: "5",
language: "portuguese",
status: "second"
},
]
list1 = []
list2 = ["first"]
list3 = ["first", "third"]
console.log(filterArray(myArr2, list3));
console.log(filterArray(myArr2, list2));
console.log(filterArray(myArr2, list1));

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以解構(gòu)status
并檢查是否list
包含此值。
result = myArr2.filter(({ status }) => list.includes(status));
添加回答
舉報(bào)