[英]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.