Javascript 使用包含的数组值筛选数组
我试图使用Javascript 使用包含的数组值筛选数组,javascript,arrays,filter,include,Javascript,Arrays,Filter,Include,我试图使用includes方法过滤对象数组,但我认为我做错了什么。有人能帮我吗? 它不需要是include方法,但必须返回对象,如下例所示: <html> <script> const testeArray = [{name:"antonio", category: ["One","Two"]},{name:"joana", category: ["Two"]}]; con
includes
方法过滤对象数组,但我认为我做错了什么。有人能帮我吗?
它不需要是include方法,但必须返回对象,如下例所示:
<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.includes(catArray1);
})
console.log(resultArray1); //should return antonio and joana objects
const resultArray2 = testeArray.filter((item)=>{
return item.name.includes(text) && item.category.includes(catArray2);
})
console.log(resultArray2); //should return antonio object only
</script>
</html>
const testeArray=[{name:“antonio”,类别:[“一”,“二”]},{name:“joana”,类别:[“二”]}];
常数catArray1=[“一”、“二”];
常数catArray2=[“一”];
const text=“an”
const Resultarray 1=testeArray.filter((项)=>{
退货项目名称包括(文本)和项目类别包括(catArray1);
})
console.log(resultary1)//应该返回antonio和joana对象
const Resultarray 2=testeArray.filter((项)=>{
退货项目名称包括(文本)和项目类别包括(catArray2);
})
console.log(resultarray 2)//应仅返回antonio对象
const testeArray=[{name:“antonio”,类别:[“一”,“二”]},{name:“joana”,类别:[“二”]}];
常数catArray1=[“一”、“二”];
常数catArray2=[“一”];
const text=“an”
const Resultarray 1=testeArray.filter((项)=>{
退货项目名称包括(文本)和项目类别包括(catArray1);
})
console.log(resultary1)//应该返回antonio和joana对象
const Resultarray 2=testeArray.filter((项)=>{
退货项目名称包括(文本)和项目类别包括(catArray2);
})
console.log(resultarray 2)//应仅返回antonio对象
您可以使用Array#some
和Array#includes
来检查一个数组是否包含另一个数组的任何元素
const testeArray=[{name:“antonio”,类别:[One”,“Two”]},{name:“joana”,类别:[“Two”]};
常数catArray1=[“一”、“二”];
常数catArray2=[“一”];
const text=“an”
const Resultarray 1=testeArray.filter((项)=>{
returnitem.name.includes(text)和&item.category.some(x=>catArray1.includes(x));
})
console.log(resultary1)//应该返回antonio和joana对象
const Resultarray 2=testeArray.filter((项)=>{
returnitem.name.includes(text)和&item.category.some(x=>catArray2.includes(x));
})
console.log(resultarray 2)//应仅返回antonio对象
您可以筛选项目类别并检查返回的数组长度是否大于0
const testeArray=[{name:“antonio”,类别:[“一”,“二”]},{name:“joana”,类别:[“二”]}];
常数catArray1=[“一”、“二”];
常数catArray2=[“一”];
const text=“an”
const Resultarray 1=testeArray.filter((项)=>{
返回item.name.includes(text)和&item.category.filter(cat=>catArray1.indexOf(cat)>-1)。长度>0;
})
console.log(resultary1)//应该返回antonio和joana对象
const Resultarray 2=testeArray.filter((项)=>{
返回item.name.includes(text)和&item.category.filter(cat=>catArray2.indexOf(cat)>-1)。长度>0;
})
console.log(resultarray 2)//应仅返回antonio对象
如果要查找精确匹配,可以使用JSON.stringify
将数组转换为字符串,并使用=
运算符进行匹配
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);
当两个数组的元素处于相同位置时,这将起作用