d3.js 如何在对象数组中查找最小值和最大值

xqkwcwgp  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(152)

我是D3和Javascript社区的新手。我有一组对象(国家),每个对象由键和它的值(收入)表示的年份组成。
如何获得所有对象的最小和最大收入值及其关键字来设置颜色图例?
请找到项目的链接https://observablehq.com/d/287af954b6aaf349,希望它能帮助解释这个问题。
感谢您阅读这些问题。

u91tlkcl

u91tlkcl1#

要获取全局最大值,可以使用

const max = d3.max(
    countries.map(country =>
        d3.max(Object.values(country))));

// 179000

它所做的就是遍历所有国家,从每个国家获取所有值中的最大值,然后取这些最大值中的最大值并返回。
要同时获得相应的年份,这就变得更加复杂了。您可以使用Object.entries来获得键值对,而不仅仅是值。然后,您可以手动循环每个国家,更新最大值和相应的年份

data.reduce((max, country) => {
  const newMax = d3.max(Object.values(country));
  if(newMax > max.value) {
    return {
      year: Object.entries(country).find(([year, value]) => value === newMax)[0],
      value: newMax,
    };
  }
  return max;
}, {value: 0});

// {year: "2040", value: 179000}
7vux5j2d

7vux5j2d2#

d3中支持的另一个有用的方法是d3.extent()函数check this article

相关问题