Javascript 检查数组中的任何对象是否包含另一个数组中列出的属性
我已经尝试了一些解决方案,并在这里查看了一下,但似乎无法使其工作 我有2个数组,想检查数组中的任何项是否包含另一个数组中的任何字符串Javascript 检查数组中的任何对象是否包含另一个数组中列出的属性,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我已经尝试了一些解决方案,并在这里查看了一下,但似乎无法使其工作 我有2个数组,想检查数组中的任何项是否包含另一个数组中的任何字符串 const stepsShown = ["ref2", "ref7"]; const items = [ { name: "item1", element: "ref1"}, { name: "item2", element: "ref2"} ]; const refsExist = items.some((r) =>{stepsShown.indexOf(
const stepsShown = ["ref2", "ref7"];
const items = [
{ name: "item1", element: "ref1"},
{ name: "item2", element: "ref2"}
];
const refsExist = items.some((r) =>{stepsShown.indexOf(r.element);});
在这个例子中,我希望refsExist
是true
我想我的语法有点混乱!谁能帮忙吗?:) 除了需要测试非
-1
值之外,您的arrow函数不应该有括号
如果箭头函数由单个表达式组成,则不需要括号:
items.some(r=>stepsShown.indexOf(r.element)!=-1);
如果箭头函数包含语句或多个表达式,则需要大括号。使用花括号时,必须包含显式的return
语句
items.some(r=>{
for(some;thing;) { ... }
return otherThing;
});
而不是依赖可读性较差的.indexOf(..)=-1
test,您可以简单地使用includes
:
items.some(r=>stepsShown.includes(r.element));
您几乎完全正确,只是需要测试非
-1
值,并且箭头函数不应该有括号
如果箭头函数由单个表达式组成,则不需要括号:
items.some(r=>stepsShown.indexOf(r.element)!=-1);
如果箭头函数包含语句或多个表达式,则需要大括号。使用花括号时,必须包含显式的return
语句
items.some(r=>{
for(some;thing;) { ... }
return otherThing;
});
而不是依赖可读性较差的.indexOf(..)=-1
test,您可以简单地使用includes
:
items.some(r=>stepsShown.includes(r.element));
您可以找到一个元素,然后检查它是否未定义
const stepsShown=[“ref2”、“ref7”];
常数项=[
{name:“item1”,element:“ref1”},
{name:“item2”,元素:“ref2”}
];
const refsExist=items.find((r)=>{
返回步骤显示(r元素)>-1的索引;
});
console.log(refsExist!==未定义)代码>您可以找到一个元素,然后检查它是否未定义
const stepsShown=[“ref2”、“ref7”];
常数项=[
{name:“item1”,element:“ref1”},
{name:“item2”,元素:“ref2”}
];
const refsExist=items.find((r)=>{
返回步骤显示(r元素)>-1的索引;
});
console.log(refsExist!==未定义)
您需要包含,而不是索引of
-并且您需要从函数返回结果包含,而不是索引of
-并且您需要从函数返回结果