簡體   English   中英

Javascript array.filter 和 reduce

[英]Javascript array.filter and reduce

將一組選民對象轉換為有多少人投票的計數請幫助我我開始學習 javascript 但我對減少和過濾有些人可以修復感到困惑? 我運行代碼並未定義@@``

    function total(arr) {
    let result = arr.filter(function(votes){
   return votes !==true;
 }).reduce(function(item,cur){
   return [(+item),+(+cur)];
 },[0]);}
var voters = [
  {name:'Bob' , age: 30, voted: true},
  {name:'Jake' , age: 32, voted: true},
  {name:'Kate' , age: 25, voted: false},
  {name:'Sam' , age: 20, voted: false},
  {name:'Phil' , age: 21, voted: true},
  {name:'Ed' , age:55, voted:true},
  {name:'Tami' , age: 54, voted:true},
  {name:'Mary', age: 31, voted: false},
  {name:'Becky', age: 43, voted: false},
  {name:'Joey', age: 41, voted: true},
  {name:'Jeff', age: 30, voted: true},
  {name:'Zack', age: 19, voted: false}
];``

您可以進行一次減少,然后將 object 的 boolean 值簡單地添加到計數中。

 function total(array) { return array.reduce(function(count, voter) { return count + voter.voted; }, 0); } var voters = [{ name: 'Bob', age: 30, voted: true }, { name: 'Jake', age: 32, voted: true }, { name: 'Kate', age: 25, voted: false }, { name: 'Sam', age: 20, voted: false }, { name: 'Phil', age: 21, voted: true }, { name: 'Ed', age:55, voted: true }, { name: 'Tami', age: 54, voted: true }, { name: 'Mary', age: 31, voted: false }, { name: 'Becky', age: 43, voted: false }, { name: 'Joey', age: 41, voted: true }, { name: 'Jeff', age: 30, voted: true }, { name: 'Zack', age: 19, voted: false }]; console.log(total(voters));

最好和最短的方法,只需過濾和計數

let voters = [
  {name:'Bob' , age: 30, voted: true},
  {name:'Jake' , age: 32, voted: true},
  {name:'Kate' , age: 25, voted: false},
  {name:'Sam' , age: 20, voted: false},
  {name:'Phil' , age: 21, voted: true},
  {name:'Ed' , age:55, voted:true},
  {name:'Tami' , age: 54, voted:true},
  {name:'Mary', age: 31, voted: false},
  {name:'Becky', age: 43, voted: false},
  {name:'Joey', age: 41, voted: true},
  {name:'Jeff', age: 30, voted: true},
  {name:'Zack', age: 19, voted: false}
];

voters.filter(person => person.voted).length

這是解決問題的一種方法:

console.log(voters.reduce((prev,curr,i,ar)=>{
    (curr.voted==true && curr.age >=18) ?  ans.push(curr) : null
    return ans.length
},{}))

暫無
暫無

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

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