检查javascript数组中的值

时间:2018-01-17 18:16:00

标签: javascript arrays

我有简单的JavaScript问题。

我有一个包含9个对象(Cell)的数组(xyz),每个对象有2个属性(e,v)。

有没有简单的方法来检查其中一个属性的所有值是否为false?

类似的东西:

var myArray = xyz[];

if(all myArray.e==false){
    do this;
}

谢谢:D

Array[9]
0:Cell
 e:false
 v:"x"
1:Cell
2:Cell
3:Cell
4:Cell
...etc

6 个答案:

答案 0 :(得分:1)

您可以使用JavaScript Array every() Method

var myArray = [xyz];
if (myArray.every(obj => !obj.e)) {
   do this;
}

答案 1 :(得分:0)

您可以使用reduce功能执行此操作。

尝试:

const areAllFalse = !myArray.reduce((prev, cur) => prev || cur, false)

查看reduce的{​​{3}},了解有关其工作原理的详细信息。

答案 2 :(得分:0)

你应该做

let areAllFalse = true;
for (let obj in myArray){
    if (e.v) {
       areAllFalse = false;
       break;
    }
}
if (areAllFalse){
    // Do stuff
}

基本上:

  • 您将变量(在此代码段中称为areAllFalse)实例化为true(假设所有元素都为false)
  • 然后你将它们全部循环
  • 如果至少有一个为真,则更改该变量的值并退出循环,因为它是用于继续
  • 如果变量areAllFalse为true,则数组中的每个元素都为false,因此您可以执行代码

这将适用于所有编程语言(具有明显的语法更改)

我希望我帮助过你:)

答案 3 :(得分:0)

有几种不同的方法可以解决这个问题。一种方法是使用 every。 (MDN Docs

function myTest(thisItem) {
    return !thisItem.e;
}

var myArray = [
    {e: false, v: 111},
    {e: false, v: 222},
    {e: false, v: 333}
];

var output = myArray.every(myTest);

console.log(output);
// expected output: true

答案 4 :(得分:0)

您可以使用array#every来检查数组中所有对象的条件是否为真。使用Object#keys迭代对象中的键并使用array#some检查错误值。



var arr = [{e:false, v:'x'}, {e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'}],
    result = arr.every(o => Object.keys(o).some(k => !o[k]));
console.log(result);




要检查对象中的e属性,首先应检查对象中是否存在e密钥,然后检查其值是否为false。



var arr = [{e:false, v:'x'}, {e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'},{e:false, v:'x'}],
    result = arr.every(o => 'e' in o && !o.e);
console.log(result);




答案 5 :(得分:0)

您有多种选择,例如

  1. 正常循环
  2. ForEach循环
  3. 或使用它的任何循环机制,您可以检查它是否包含false属性。
  4. 但是对于简短的回答,我认为你可以使用findIndex,如果匹配条件,它将返回索引: 示例:

    if(xyz.findIndex(k => k.e== false) > -1){
    console.log("it contains false value also");
    }