检查javascript数组中的值
我有一个简单的JavaScript问题 我有一个由9个对象(单元格)组成的数组(xyz),每个对象有2个属性(e,v) 是否有任何简单的方法可以检查其中一个属性的所有值是否为false 比如:检查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功能来实
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
功能来实现这一点
尝试:
查看forreduce
,了解其工作原理的更多信息。您可以使用
你应该这样做
let areAllFalse = true;
for (let obj in myArray){
if (e.v) {
areAllFalse = false;
break;
}
}
if (areAllFalse){
// Do stuff
}
基本上:
- 将一个变量(在此代码段中称为
)实例化为true(假设所有元素都为false)areAllFalse
- 然后你把它们都循环
- 如果至少有一个为真,则更改该变量的值,并在循环可用时退出循环以继续
- 如果变量
为true,则数组中的每个元素都为false,因此可以执行代码areAllFalse
我希望我能帮助你:)有几种不同的方法可以解决这个问题。一种方法是使用
每个
。()
您可以使用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");
}