我有以下数据,一个对象数组:

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 找到 yy0 之间差异最大的对象。

我可以这样做以获得最大的不同:
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 进行排序,该函数给定两个对象 ab ,使用它们的 yy0 属性的差异来比较它们。通过从 a 中减去 b 的值,我按降序返回对象,然后取第一个对象。

关于d3.js - D3 : use d3. max 获取包含对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19303888/

10-13 02:16