2017-08-28 85 views
0

我已经尝试了一些解决方案,并且在此处查看了一下,但似乎无法使其工作。检查数组中是否有任何对象包含另一个数组中列出的属性

我有2个数组,并且想要检查数组中是否有任何项包含任何其他数组中的字符串。

const stepsShown = ["ref2", "ref7"]; 
const items = [ 
{ name: "item1", element: "ref1"}, 
{ name: "item2", element: "ref2"} 
]; 
const refsExist = items.some((r) =>{stepsShown.indexOf(r.element);}); 

在这个例子中我希望refsExisttrue

我觉得我有点糊涂在我的语法!任何人都可以帮忙吗? :)

+0

You wan t'includes',而不是'indexOf' - 并且您需要返回该函数的结果 – Bergi

回答

3

你几乎是正确的,除了你需要测试一个非-1值,并且你的箭头函数不应该有括号。

如果箭头功能由单一的表达,你不需要括号:

items.some(r=>stepsShown.indexOf(r.element)!=-1); 

如果箭头功能包括陈述或者多个表达式,你需要花括号。当您使用大括号时,您必须包含明确的return语句。

items.some(r=>{ 
    for(some;thing;) { ... } 
    return otherThing; 
}); 

不是依靠可读少.indexOf(..)!=-1测试,你可以简单地使用includes

items.some(r=>stepsShown.includes(r.element)); 
0

你可以找到一个元素,后来检查它是否是未定义或不

const stepsShown = ["ref2", "ref7"]; 
 
const items = [ 
 
{ name: "item1", element: "ref1"}, 
 
{ name: "item2", element: "ref2"} 
 
]; 
 
const refsExist = items.find((r) =>{  
 
    return stepsShown.indexOf(r.element)>-1; 
 
}); 
 

 
console.log(refsExist !== undefined);

相关问题