我有以下数据,一个对象数组:
var data = [
{ x: 0, y0: 0, y: 100 },
{ x: 1, y0: 0, y: 150 },
{ x: 2, y0: 50, y: 100 },
{ x: 3, y0: 50, y: 150 }
]
我想使用 D3 找到
y
和 y0
之间差异最大的对象。我可以这样做以获得最大的不同:
var max_val = d3.max(data, function(d) { return d.y - d.y0;} );
它返回150。但我不知道如何做的是获取包含对象,并得知x的对应值是1。
有任何想法吗?
最佳答案
您的问题询问如何使用 d3.max
来查找此对象,但另一种想法是使用 Javascript Array 的 sort
函数为您执行此操作:
>>> data.sort(function(a, b){ return (b.y - b.y0) - (a.y - a.y0); } )[0]
Object {x: 1, y0: 0, y: 150}
在这里,我使用一个函数对
data
进行排序,该函数给定两个对象 a
和 b
,使用它们的 y
和 y0
属性的差异来比较它们。通过从 a
中减去 b
的值,我按降序返回对象,然后取第一个对象。关于d3.js - D3 : use d3. max 获取包含对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19303888/