d3.max 个对象数组
d3.max of an array of objects
我有一个这样的对象数组,我想在这个对象数组中找到最大值 (5.7)。
我试过 d3.max(data) 但它只有 returns 第一个值。我想我可能需要将这个对象数组转换为值列表而不是工作?我不知道该怎么做。
let data =
[{2017: 5.2},
{2018: 5.7},
{2019: 5.1},
{2020: 4.8},
{2021: 0}]
谢谢。
习惯上,对于 D3,您可能希望使用公用键,例如:
{ year: 2017, value: 5.2 }
但是,在您这里的特定情况下,您仍然可以使用 d3.max,您只需要使用一个访问器函数来处理数组中每个对象的动态对象键:
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)
。
我有一个这样的对象数组,我想在这个对象数组中找到最大值 (5.7)。
我试过 d3.max(data) 但它只有 returns 第一个值。我想我可能需要将这个对象数组转换为值列表而不是工作?我不知道该怎么做。
let data =
[{2017: 5.2},
{2018: 5.7},
{2019: 5.1},
{2020: 4.8},
{2021: 0}]
谢谢。
习惯上,对于 D3,您可能希望使用公用键,例如:
{ year: 2017, value: 5.2 }
但是,在您这里的特定情况下,您仍然可以使用 d3.max,您只需要使用一个访问器函数来处理数组中每个对象的动态对象键:
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)
。