检查javascript数组中的值

检查javascript数组中的值,javascript,arrays,Javascript,Arrays,我有一个简单的JavaScript问题 我有一个由9个对象(单元格)组成的数组(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 您可以使用reduce功能来实

我有一个简单的JavaScript问题

我有一个由9个对象(单元格)组成的数组(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

您可以使用
reduce
功能来实现这一点

尝试:

查看for
reduce
,了解其工作原理的更多信息。

您可以使用

你应该这样做

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

  • 将一个变量(在此代码段中称为
    areAllFalse
    )实例化为true(假设所有元素都为false)
  • 然后你把它们都循环
  • 如果至少有一个为真,则更改该变量的值,并在循环可用时退出循环以继续
  • 如果变量
    areAllFalse
    为true,则数组中的每个元素都为false,因此可以执行代码
这将适用于每种编程语言(具有明显的语法更改)


我希望我能帮助你:)

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

您可以使用
array#every
with检查数组中所有对象的条件是否为真。使用
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]);

控制台日志(结果)您有多个选项可以执行此操作,如

  • 正常for循环
  • ForEach循环
  • 或者使用任何循环机制,您可以检查它是否包含false属性
  • 但作为简短的回答,我认为您可以使用findIndex,它将在符合条件时返回索引: 例如:

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

    我同意。您可以添加一些解释或代码片段吗?谢谢,这看起来非常简单和有用。谢谢,这看起来很好和优雅,但它是在检查arr.e值还是任何键值?如果我有
    var arr=[{e:true,v:false},{e:false,v:false}]
    结果仍然是true。它正在检查对象中的任何值。是否只检查e值?是的,只有一个属性(e),其余属性都可以为真或假,或任何其他值。
    let areAllFalse = true;
    for (let obj in myArray){
        if (e.v) {
           areAllFalse = false;
           break;
        }
    }
    if (areAllFalse){
        // Do stuff
    }
    
    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
    
    if(xyz.findIndex(k => k.e== false) > -1){
    console.log("it contains false value also");
    }