Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用D3获取具有最大值的对象_Javascript_D3.js - Fatal编程技术网

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

Javascript 使用D3获取具有最大值的对象,javascript,d3.js,Javascript,D3.js,我有一个对象数组,从中可以轻松获得如下最大值: var maxValue = d3.max(data, function (d, i) { return d.value }); 现在,我怎样才能得到的不是最大值,而是包含该值的对象?有没有一种特定于D3的方法可以做到这一点?这里不需要D3,Javascript内置的.sort()就足够了: data.sort(function(a, b) { return b.value - a.value; }); 在此之后

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

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

现在,我怎样才能得到的不是最大值,而是包含该值的对象?有没有一种特定于D3的方法可以做到这一点?

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

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

在此之后,
数据将按降序排列。也就是说,
数据[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)
(函数()
{
d3.each=函数(数组、fn、上下文)
{
对于(变量i=0,len=array.length;imax.value)
{
max=d;
}
});
console.log(最大值)


你还得到了一个新的d3助手函数(不是真的:)(无法在d3 API中找到它)

第一次想到这样做,但这是过度的和低效的。这是怎么过度的和低效的呢?我倾向于将此作为一个简单有效的解决方案,谢谢!你对整个数组进行排序只是为了找到最大值:@Metalstorm那么你真的应该用最大的整数初始化,这样你就可以保存对null的检查:哦,天哪,我真的需要所有这些才能得到最大值的对象吗?=)您有了一个新的helper函数,可以在任何地方使用,并且应该减少代码总量(您应该已经有了这个)。你有数据,你有输出。如果需要,实际代码可以是1行。的可能重复