我有一個這樣的物件陣列,我想在這個物件陣列中找到最大值(5.7)。
我試過 d3.max(data) 但它只回傳第一個值。我想我可能需要將此物件陣列轉換為值串列才能作業?我不知道該怎么做。
let data =
[{2017: 5.2},
{2018: 5.7},
{2019: 5.1},
{2020: 4.8},
{2021: 0}]
謝謝你。
uj5u.com熱心網友回復:
習慣上,使用 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)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480123.html
標籤:d3.js
上一篇:用新資料重繪d3圖
