[英]How to count the number of trues in an array of boolean values?
function countSheeps(arrayOfSheep) {
let sum = [];
for (let i = 0; i < arrayOfSheep.length; i++) {
if (arrayOfSheep[i] == true) {
sum[i].push(arrayOfSheep[i]);
}
}
return sum.length;
}
var array1 = [
true,
true,
true,
false,
true,
true,
true,
true,
true,
false,
true,
false,
true,
false,
false,
true,
true,
true,
true,
true,
false,
false,
true,
true,
];
console.log(countSheeps(array1));
我在計算布爾值數組中的真數時遇到了問題。 我原以為計數值必須是 17,但它是 0,誰能告訴我哪里錯了,我應該怎么做才能讓它發揮作用?
reduce
是一種計算數組中項目的簡單方法: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
它的一個版本有兩個參數:一個函數和累加器的初始值。
函數參數還有兩個參數:當前累加器和數組中的一項。 它將為數組中的每個項目調用此函數。 返回值將作為下一次調用的累加器傳遞。
三元語句sheep? acc+1: acc
sheep? acc+1: acc
表示如果sheep
是真實的,則返回acc+1
否則返回acc
。 當聲明一個沒有花括號的箭頭函數時,返回是隱式的。
function countSheeps(arrayOfSheep) { return arrayOfSheep.reduce((acc, sheep) => sheep? acc+1: acc, 0) } const array1 = [ true, true, true, false, true, true, true, true, true, false, true, false, true, false, false, true, true, true, true, true, false, false, true, true, ]; console.log(countSheeps(array1));
arrayOfSheep.length
,而不是arrayOfSheep.lenght
。sum
數組sum.push(arrayOfSheep[i])
。function countSheeps(arrayOfSheep) {
let sum = [];
for (let i = 0; i < arrayOfSheep.length; i++) {
if (arrayOfSheep[i]) {
sum.push(arrayOfSheep[i]);
}
}
return sum.length;
}
一班輪:過濾數組,然后取長度:
const array1 = [ true, true, true, false, true, true, true, true, true, false, true, false, true, false, false, true, true, true, true, true, false, false, true, true,]; console.log(array1.filter(Boolean).length);
只需要過濾並確定結果的長度。 使用 const 而不是 var,因為在這種情況下值不會改變。
const array1 = [
true,
true,
true,
false,
true,
true,
true,
true,
true,
false,
true,
false,
true,
false,
false,
true,
true,
true,
true,
true,
false,
false,
true,
true,
];
console.log(array1.filter(item => item).length);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.