Javascript数组值比较

时间:2018-04-04 11:29:52

标签: javascript

我正在检查每个复选框状态(总共2个元素)。

var checked = [];
document.querySelectorAll('.checkbox').forEach(function(e,i){
 checked.push(e.checked)
})

现在检查的值可能是

(2) [true, true]

(2) [true, false]

(2) [false, true]

(2) [false, false]

我现在用一点手动方式检查它

if(checked[0] && check[1]) { ... }

如果我有更多元素,我必须手动添加它们,如

 if(checked[0] && check[1] && check[2]) { ... }

我正在寻找一种更好的方法来完善我的代码,因此我不需要手动添加数组值来进行比较。感谢

3 个答案:

答案 0 :(得分:5)

使用everyArray.from

var checked = [];
var allCheckboxes = document.querySelectorAll('.checkbox');
var allChecked = Array.from( allCheckboxes ).every( s => s.checked )

答案 1 :(得分:0)

您可以使用Array.reduce这样做

const pass = [true, true, true]
const passNot = [true, false, true]

const reducer = (isPassing, value) => {
  if (value === false) return false
  else return isPassing
}

console.log('yay', pass.reduce(reducer, true))
console.log('nay', passNot.reduce(reducer, true))

答案 2 :(得分:0)

您尝试将一组值组合成一个值,这就是reduce方法的作用。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

    let result = document.querySelectorAll('.checkbox')
    .map( box => box.checked ) // get an array of boolean
    .reduce ( (bool, res) => return bool && res /*all checkboxes must be checked */, true /* initial value */ );