如何找到对象的最大值,然后在javascript中返回该values属性?

时间:2015-04-23 22:02:22

标签: javascript jquery

我需要带有最大值的属性并返回属性?从对象中的对象,如何在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 
    } 
}

1 个答案:

答案 0 :(得分:8)

您可以根据值

获取密钥并减少
var key = Object.keys(voteCount.president).reduce(function(a, b) {
    return voteCount.president[a] > voteCount.president[b] ? a : b;
});

FIDDLE

̿'̿'̿\̵͇̿̿\з=(•̪●)=ε/̵͇̿̿/'̿'̿̿

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'; 
}

并且只有具有最大值的名称仍然存在。