簡體   English   中英

JavaScript數組值比較

[英]Javascript array value compare

我正在檢查每個復選框的狀態(總共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]) { ... }

我正在尋找一種改進代碼的更好方法,因此不需要手動添加數組值進行比較。 謝謝

使用everyArray.from

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

您可以使用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)) 

您正在嘗試將值數組組合為單個值,這就是reduce方法的作用。

https://developer.mozilla.org/zh-CN/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 */ );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM