2 回答

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用Array.prototype.some,您可以確定該值是否存在。
使用Array.filter函數(shù),它僅過(guò)濾true值,因此需要在回調(diào)時(shí)返回布爾值。
const input = [{
"@id": "/api/main/7648",
"@type": "Main",
category: [{
name: "laboriosam"
}]
},
{
"@id": "/api/main/7647",
"@type": "Main",
category: [{
name: "foo"
},
{
name: "bar"
}
]
}
];
console.log(input.filter(main => main.category.some(category => category.name == "foo")))

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
我覺得你的問(wèn)題真的很難理解。如果你只想要 @type = "Main" 的對(duì)象,你可以這樣做
this.state.mains.filter(x => x["@type"] === "Main");
如果您想過(guò)濾掉那些沒有特定類別的人,您可以添加另一個(gè)過(guò)濾器,如下所示:
this.state.mains .filter(x => x["@type"] === "Main") .filter(x => x.category.findIndex(c => c.name === "foo") !== -1);
顯然,在大數(shù)組的情況下,您還可以將兩項(xiàng)檢查放入一個(gè)過(guò)濾器中,但這可能不那么可讀。
另請(qǐng)注意,這[...this.state.mains].filter(...)
是多余的,因?yàn)?code>.filter()已經(jīng)返回了一個(gè)新數(shù)組。
添加回答
舉報(bào)