![](/img/trans.png)
[英]Check if all the values in array of object is equal to false and return true in react
[英]Is it possible to check if an array has all values are true, some are true and all are false
我有一個數組[true,true,true,false,false]
是否可以在單個循環中檢查該數組是否具有所有值 true 或某些值 true 或所有值 false 以提高性能。 目前我正在為每個動作使用every()
和some()
只是想知道是否有比檢查兩次更清潔的方法。
你可以做
const s = new Set(arr);
const mixed = s.size === 2;
const allTrue = !mixed && s.has(true);
const allFalse = !mixed && !allTrue;
然而,在我的簡單測試中,性能提高了大約 8 倍(至少在 Firefox 中),是
const hasTrue = arr.some(v => v);
const hasFalse = arr.some(v => !v);
const mixed = hasTrue && hasFalse;
const allTrue = !mixed && hasTrue;
const allFalse = !mixed && hasFalse;
假設arr
中的所有內容都是布爾值,您可以執行以下操作:
const arr = [true, true, true, false, false];
const hasTrue = arr.includes(true);
const hasFalse = arr.includes(false);
const mixed = hasTrue && hasFalse;
const allTrue = hasTrue && !hasFalse;
const allFalse = !hasTrue && hasFalse;
請注意,此解決方案在 JS 中的性能不是特別好,@Bravo 的答案是更好的選擇。
您可以在數組上使用Math.min
和Math.max
; 如果結果不同,則兩者都有,如果結果相同,則取決於結果是 0 還是 1,它們分別是false
還是true
。 例如,
const arr = [true, false, false] const min = Math.min(...arr), max = Math.max(...arr); const mix = min != max; const alltrue = !mix && !!min; const allfalse = !mix && !min; console.log(mix, alltrue, allfalse);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.