Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用包含的数组值筛选数组_Javascript_Arrays_Filter_Include - Fatal编程技术网

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);
当两个数组的元素处于相同位置时,这将起作用