我有简单的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
答案 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)
您有多种选择,例如
但是对于简短的回答,我认为你可以使用findIndex,如果匹配条件,它将返回索引: 示例:
if(xyz.findIndex(k => k.e== false) > -1){
console.log("it contains false value also");
}