我有学生名单。在列表中,一些学生可以是活动的,而其他学生可以是不活动的。
var allActive = [{id: 1, active: true}, {id: 2, active: true}, , {id: 3, active: true}];
var someNot = [{id: 4, active: true}, {id: 5, active: true}, , {id: 6, active: false}];
我想检查一个列表是否所有学生都有效。简单的方法就是使用for循环
for(var index = 0, student; student = array[index]; index++){
if(stduent.active){
return false;
}
}
但是,我不想再像这样创建一段代码。我想使用像forEach这样的快速方法来检查数组是否所有元素都处于活动状态。使用一些内置的数组函数可以快速实现它吗?
答案 0 :(得分:6)
您可以使用every方法执行此操作。这是一个例子
var allActive = [{id: 1, active: true}, {id: 2, active: true}, , {id: 3, active: true}];
var someNot = [{id: 4, active: true}, {id: 5, active: true}, , {id: 6, active: false}];
console.log(allActive.every(entry=>entry.active)); // expected output: true
console.log(someNot.every(entry=>entry.active)); // expected output: false

答案 1 :(得分:3)
您可以使用回调isActive
检查属性并使用Array#every
检查数组。
function isActive(o) {
return o.active === true;
}
var allActive = [{ id: 1, active: true }, { id: 2, active: true }, , { id: 3, active: true }],
someNot = [{ id: 4, active: true }, { id: 5, active: true }, , { id: 6, active: false }];
console.log(allActive.every(isActive));
console.log(someNot.every(isActive));
答案 2 :(得分:2)
使用some
var isOneFalse = array.some( s => s.active === false );
即使一个有效的isOneFalse
, false
也是如此
或者您可以修改为
var isAllTrue = !array.some( s => s.active === false );
仅当所有有效状态为isAllTrue
时, true
才为真