我有一组嵌套对象,其中包含每个州每年的 GDP、收入、人口等值:
// The "records" array looks like this:
[
{
name : "...",
income : [
[1995, 1234], // [year, value]
[1996. 1235],
[...]
],
GDP : [
[1995, 1234],
[1996. 1235],
[...]
],
population : [
[1995, 1234],
[1996. 1235],
[...]
]
}, {
name : "...",
income : [
[...]
],
GDP : [
[...]
],
population : [
[...]
]
}, {
...
}
]
现在,我想找到所有州和年份的每个维度的最小值和最大值(范围)。
populationExtents = [659651, 82536680];
gdpExtents = [14250, 2498800];
incomeExtents = [..., ...];
我怎样才能做到这一点而不必多次遍历整个数组?目前,我正在为每个维度执行此操作:
var income = records.map(function(d, i) {
return d.income;
});
var min = d3.min(income, function(d, i) {
return d3.min(d, function(e) {
return e[1]; // returns values of each year
});
});
var max = d3.max(income, function(d, i) {
return d3.max(d, function(e) {
return e[1];
});
});
但我认为这太复杂了,因为我应该能够计算每个维度和状态的所有“局部”最小值,然后计算所有状态的全局最小值(而不是每个维度一次)。
我尝试了几个级别的 d3.map 和嵌套的 d3.min,但我无法理解这个结构。