使用D3获取具有最大值的对象

时间:2014-04-29 09:46:40

标签: javascript d3.js

我有一个对象数组,我可以从中轻松获得这样的最大值:

    var maxValue = d3.max(data, function (d, i) {
        return d.value
    });

现在,我怎么能得到不是最大值,而是包含这个值的对象?是否有D3特定的方法来做到这一点?

2 个答案:

答案 0 :(得分:0)

这里不需要D3,内置.sort()的Javascript就足够了:

data.sort(function(a, b) { return b.value - a.value; });

在此之后,data将按降序排列。也就是说,data[0]是具有最高.value的元素。

答案 1 :(得分:0)

粗略的实施:

(function()
{
    d3.each = function(array, fn, context)
    {
        for(var i = 0, len = array.length; i < len; i++)
        {
            fn.call(context || this, array[i], i);
        }
    }
})();


var data = [{ 'value' : 1 }, { 'value' : 6 }, { 'value' : 100 }, { 'value' : 56 }, { 'value' : 21 }];


var max = null;
d3.each(data, function(d, i)
{
    if(!max || d.value > max.value)
    {
        max = d;
    }
});

console.log(max)

http://jsfiddle.net/xhVn4/

你也得到一个花哨的(不是真的:))新的d3辅助函数(无法在D3 API中找到它)