我需要带有最大值的属性并返回属性?从对象中的对象,如何在JS中完成?或者jQuery中有什么东西可以让它变得简单吗?
例如,对于"总统",我需要返回" Louise"
voteCount
{
president:
{
Bob: 3,
Mary: 1,
Cindy: 1,
Louise: 10,
Fred: 4,
Ivy: 1,
Nate: 1,
Oscar: 1,
Paulina: 1,
Tracy: 1,
Wesley: 1,
Steve: 1
},
vicePresident:
{
Devin: 1,
Hermann: 11,
John: 1,
Alex: 3,
Kerry: 2,
Mary: 1,
Oscar: 1,
Nate: 1,
Bob: 2,
Steve: 1,
Yvonne: 1,
Zane: 1
},
secretary:
{
Gail: 1,
Fred: 14,
Bob: 2,
Ivy: 3,
Mary: 1,
Nate: 1,
Devin: 1,
Oscar: 1,
Alex: 1,
Valorie: 1
},
treasurer:
{
Kerry: 2,
Ivy: 14,
Bob: 4,
Fred: 1,
Gail: 1,
Tracy: 1,
Xavier: 1,
Hermann: 1,
Mary: 1
}
}
答案 0 :(得分:8)
您可以根据值
获取密钥并减少var key = Object.keys(voteCount.president).reduce(function(a, b) {
return voteCount.president[a] > voteCount.president[b] ? a : b;
});
̿'̿'̿\̵͇̿̿\з=(•̪●)=ε/̵͇̿̿/'̿'̿̿
Object.keys
获取所有密钥,如Bob,Mary,Cindy等在一个数组中
然后Array.reduce
减少该数组,直到只剩下一个值,因为它使用了像这样的条件
obj[key1] > obj[key2] ? key1 : key2;
它基本上表示如果Bob的值大于Mary的值,则返回Bob,并在下一次迭代测试Bob对Cindy的值并返回更大的,更可读的
if ( obj['Bob'] > obj[Mary] ) {
return 'Bob';
} else {
return 'Mary';
}
并且只有具有最大值的名称仍然存在。