获取d3.min中对象的最小值

时间:2014-05-22 20:53:00

标签: javascript d3.js

如何获得密钥“sample”的最大值?

我可以使用d3.max(myData)获取[1,2,3]之类的数组的最大值。对于我更复杂的示例,我可以使用访问器函数来获取myData之外的值。这个访问器功能是什么样的?

var myData = [
  { type: "a", sample: 28, population: 32},
  { type: "b", sample: 24, population: 19},
  { type: "c", sample: 19, population: 23},
  { type: "d", sample: 29, population: 26}
];

2 个答案:

答案 0 :(得分:2)

将为每个数组元素计算访问器函数,并将元素作为第一个参数传递。考虑到这一点,您可以执行以下操作:

d3.max(myData, function(d) {
  return d.sample;
});

答案 1 :(得分:2)

作为已提供答案的扩展,我想添加两件事。首先非常明显 - 有一种获得最小值的等效方法。第二个是我在评估计算域和范围的极值时我自己做过的事情。

var min = d3.min(data, function (d) { return d.val; });
var max = d3.max(data, function (d) { return d.val; });
var colors = d3.scale.linear()
  .domain([min, max])
  .range(["blue", "red"]);

但是,有一个函数返回两者。它只是以一种笨拙且不直观的方式命名,IMnHO - d3.extent。它允许你省略两条线来计算极值,看起来非常整洁。

var colors = d3.scale.linear()
  .domain(d3.extent(data, function (d) { return d.val; }))
  .range(["blue", "red"]);