包括18-25岁的潜在选民有多少,26-35岁的有多少,36-55岁的有多少,以及每个年龄段有多少人实际投票。包含此数据的结果对象应具有6个属性。
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}
];
function voterResults(arr) {
// your code here
}
console.log(voterResults(voters)); // Returned value shown below:
/*
{ youngVotes: 1,
youth: 4,
midVotes: 3,
mids: 4,
oldVotes: 3,
olds: 4
}
我正在尝试解决这个特定的问题,下面是我所尝试的,在那里我能够形成散列表。但我不知道如何解决上述问题。
function voterResults(arr) {
let votesArray = ['youngVotes', 'youth', 'midVotes', 'mids',
'oldVotes', 'olds']
return votesArray.reduce((acc, it) => {
acc[it] = (acc[it] || 0) + 1
return acc;
}, {})
}
//输出
{
youngVotes: 1 ,
youth: 1 ,
midVotes: 1 ,
mids: 1 ,
oldVotes: 1 ,
olds: 1
}
实际需要产量:
{
youngVotes: 1,
youth: 4,
midVotes: 3,
mids: 4,
oldVotes: 3,
olds: 4
}
5条答案
按热度按时间lnlaulya1#
我首先创建一个helper函数,它返回与所传递的年龄相对应的属性字符串(例如
20
->['youth', 'youngVotes']
)。然后使用.reduce
迭代voters
数组-调用该函数以找出要递增的属性,并递增它:9q78igpj2#
你需要使用input arr,使用voted的-value,并使用age来分类和增加对象中的值。
wrrgggsh3#
这里是使用
reduce
方法和年龄组可以很容易地扩展。xsuvu9jc4#
您可以简单地使用if条件
gblwokeq5#