使用JavaScript检查元素是否在对象内包含的数组内

时间:2019-03-21 08:54:39

标签: javascript arrays algorithm object

我有一个对象,其中包含一个对象数组,例如

{ 
    0: [
          { value:1}
          { value:2}
          { value:3}

       ]
}

我正在尝试检查元素是否在数组内,所以我在做的事情像是在遍历它 Object.values(object).some(el => el.value === someNumber),但它始终返回false,为什么有人有任何想法? someNumber可以是任何值,它是一个动态值。

3 个答案:

答案 0 :(得分:2)

您需要另一个级别,因为Object.values返回一个数组的数组。

var object = { 0: [{ value: 1 }, { value: 2 }, { value: 3 }] };

console.log(Object.values(object).some(values => values.some(el => el.value === 2)));
console.log(Object.values(object).some(values => values.some(el => el.value === 7)));

答案 1 :(得分:2)

您尝试用el检查实际上是数组的someNumber,我认为是数字。要执行您想做的事情,您需要这样:

const obj = { 
  0: [
    { value:1},
    { value:2},
    { value:3}
 ]
}

const someNumber = 2;
const result = Object.values(obj).some((arr) => arr.some((el) => el.value === someNumber));
console.log(result)

答案 2 :(得分:2)

该数组位于对象的[0]元素中,因此您应该使用object[0]而不是Object.values(object)

const object = { 
  0: [
    { value:1},
    { value:2},
    { value:3}
 ]
}

console.log(object[0].some(el => el.value === 1));
console.log(object[0].some(el => el.value === 6));

除非您的对象可以包含更多属性,并且您要搜索所有这些属性。然后其他答案更正确。