3 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用Array#somewith 來(lái)Array#includes檢查一個(gè)數(shù)組是否包含另一個(gè)數(shù)組的任何元素。
const testeArray = [{name:"antonio", category: ["One","Two"]},{name:"joana", category: ["Two"]}];
const catArray1 = ["One","Two"];
const catArray2 = ["One"];
const text = "an"
const resultArray1 = testeArray.filter((item)=>{
return item.name.includes(text) && item.category.some(x => catArray1.includes(x));
})
console.log(resultArray1); //should return antonio and joana objects
const resultArray2 = testeArray.filter((item)=>{
return item.name.includes(text) && item.category.some(x => catArray2.includes(x));
})
console.log(resultArray2); //should return antonio object only

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您正在尋找精確匹配,可以使用JSON.stringify將數(shù)組轉(zhuǎn)換為字符串并使用===運(yùn)算符進(jìn)行匹配。
const testeArray = [{name:"antonio", category: ["One","Two"]},{name:"joana", category: ["Two"]}];
const catArray1 = ["One","Two"];
const catArray2 = ["One"];
const text = "an"
const resultArray1 = testeArray.filter((item)=>{
return item.name.includes(text) && JSON.stringify(item.category) === JSON.stringify(catArray1);
})
console.log(resultArray1); //should return antonio and joana objects
const resultArray2 = testeArray.filter((item)=>{
return item.name.includes(text) && JSON.stringify(item.category) === JSON.stringify(catArray2);
})
console.log(resultArray2);
當(dāng)兩個(gè)數(shù)組的元素位于相同位置時(shí),這將起作用。

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以過(guò)濾項(xiàng)目類(lèi)別并檢查返回的數(shù)組長(zhǎng)度是否大于0。
<html>
<script>
const testeArray = [{name:"antonio", category: ["One","Two"]},{name:"joana", category: ["Two"]}];
const catArray1 = ["One","Two"];
const catArray2 = ["One"];
const text = "an"
const resultArray1 = testeArray.filter((item)=>{
return item.name.includes(text) && item.category.filter(cat => catArray1.indexOf(cat) > -1).length > 0;
})
console.log(resultArray1); //should return antonio and joana objects
const resultArray2 = testeArray.filter((item)=>{
return item.name.includes(text) && item.category.filter(cat => catArray2.indexOf(cat) > -1).length > 0;
})
console.log(resultArray2); //should return antonio object only
</script>
</html>
添加回答
舉報(bào)