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行。的可能重复