d3.对象数组的最大值



我有一个这样的对象数组,我想在这个对象数组中找到最大值(5.7)。

我试过d3.max(data),但它只返回第一个值。我认为我可能需要将这个对象数组转换为一个值列表来工作?我不知道该怎么做。

let data =
[{2017: 5.2},
{2018: 5.7},
{2019: 5.1},
{2020: 4.8},
{2021: 0}]

谢谢。

从习惯上讲,对于D3,您可能希望使用通用键,例如:

{ year: 2017, value: 5.2 }

然而,在你的特殊情况下,你仍然可以使用d3。最多,您只需要使用一个访问器函数来处理数组中每个对象的动态对象键:

let data =
[{2017: 5.2},
{2018: 5.7},
{2019: 5.1},
{2020: 4.8},
{2021: 0}];

let max = d3.max(data, function(datum) {
return datum[Object.keys(datum)[0]]
});
console.log(max);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

如前所述,通常您可能希望在单个对象中分离年份和相关值,您可以使用以下命令:

let data =
[{2017: 5.2},
{2018: 5.7},
{2019: 5.1},
{2020: 4.8},
{2021: 0}];
data = data.map(function(datum) {
let year = Object.keys(datum)[0];
let value = datum[year];
return { year, value }
});
console.log(data);

现在您可以比以前更容易地找到年份和值的范围,例如:d3.max(data, d=>d.year)d3.max(data,d=>d.value)

最新更新