数组中的快速元素验证

时间:2018-01-23 09:42:06

标签: javascript html arrays

我有学生名单。在列表中,一些学生可以是活动的,而其他学生可以是不活动的。

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这样的快速方法来检查数组是否所有元素都处于活动状态。使用一些内置的数组函数可以快速实现它吗?

3 个答案:

答案 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才为真