簡體   English   中英

如何計算布爾值數組中真值的個數?

[英]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));

  1. 它應該是arrayOfSheep.length ,而不是arrayOfSheep.lenght
  2. 您需要推送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.

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