从关联数组(对象)返回最大值

时间:2013-04-15 11:07:36

标签: javascript max

我有一个关联数组,如下所示:

var data = {
    0: {
        'Number_of_Something': 212
    },
    1: {
        'Number_of_Something': 65
    },
    2: {
        'Number_of_Something': 657
    }
}

我需要在字段Number_of_Something中提取最高值,但是,因为它是对象对象中的一个字段,所以它比仅仅按照类似于方法{{{ 3}}

循环遍历对象并存储值,然后在下一个更大时替换它似乎是最简单明了的选项。

我只是问这个问题,以防除了上述方法之外还有一种更简单(更聪明)的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:16)

更简单可以是主观的...... 另一种实现要求的方法是使用Object.keysArray.prototype.map获取值的数组,并使用您链接的 Math.max 的其他解决方案:

var data = {
    0: {
        'Number_of_Something': 212
    },
    1: {
        'Number_of_Something': 65
    },
    2: {
        'Number_of_Something': 657
    }
}

var max = Math.max.apply(null,
                        Object.keys(data).map(function(e) {
                                return data[e]['Number_of_Something'];
                        }));

答案 1 :(得分:0)

您可以创建自己的(for)循环并以此方式返回最大值。另一个选择是使用像Underscore.js这样的库来为您处理这个问题并保持代码可读。