【问题标题】:Javascript array.filter and reduceJavascript array.filter 和 reduce
【发布时间】:2020-02-05 05:25:00
【问题描述】:

将选民对象数组转换为有多少人投票的计数 请帮助我开始学习 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}
];``

【问题讨论】:

  • voters.filter(x=>x.voted).length
  • 谢谢大家,我就是这么做的:D

标签: javascript arrays dictionary filter reduce


【解决方案1】:

最好和最短的方法,只需过滤和计数

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

【讨论】:

    【解决方案2】:

    您可以使用单个 reduce 并将对象的布尔值简单地添加到计数中。

    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));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多