Javascript 在.json中查找最大值和最小值

Javascript 在.json中查找最大值和最小值,javascript,arrays,json,d3.js,Javascript,Arrays,Json,D3.js,对于我试图使用d3.js制作的图形,我需要设置轴的比例 图形的数据存储在Json文件中,其结构如下: [{ "id" : "AustraliaNewZealand" , "year" : [1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010], "value":[477790,485825,487296,488885,5025

对于我试图使用d3.js制作的图形,我需要设置轴的比例

图形的数据存储在Json文件中,其结构如下:

[{
    "id" : "AustraliaNewZealand" ,
    "year" : [1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
    "value":[477790,485825,487296,488885,502585,511718,526594,538967,550556,563572,577171,579126,591635,599216,604267,608954,615853,623685,618961,614920]
}, 
{
    "id":"CentralEurope",
    "year":[1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
    "value":[1548736,1334452,1313088,1283248,1314709,1360546,1343907,1285511,1237278,1251872,1244069,1233778,1284639,1297510,1317861,1359787,1396681,1361445,1278731,1343044]
}, 
{
    "id":"EasternEurope",
    "year":[1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
    "value":[4418516,3530464,3287987,2925644,2775181,2672238,2540975,2495036,2513372,2515375,2540796,2544848,2598148,2637682,2622241,2709974,2714204,2740248,2565213,2680226]
}, 
{
    "id":"NorthAmerica",
    "year":[1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
    "value":[6750754,6821412,6948829,7059001,7166869,7386971,7460485,7509719,7573562,7790060,7675762,7710685,7769154,7896824,7918461,7841686,7966277,7751508,7277713,7493948]
}, 
{
    "id":"WesternEurope",
    "year":[1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
    "value":[4365949,4290345,4222425,4221029,4264725,4353056,4290057,4310736,4251628,4260565,4306230,4278128,4333237,4337031,4305560,4267515,4209481,4125479,3841580,3924831]
}]
我想做的是在嵌套的各种数组之间进行迭代,得到年份和值的最小值和最大值,但我不知道如何得到这些值。我使用以下方法获得了单个数组的值:

var xScale = d3 .time.scale()
                .domain((d3.extent(dataset[0].year)))
                .range([margin*2, (width - margin)]);
var yScale = d3 .scale.linear()
                .domain([0, d3.max(dataset[0].value)])
                .range([(height - margin), margin]);

其中,
\u dataset\u
是回调函数的标识符,但我希望得到所有数组之间的最小值和最大值(例如,最小值在数组3中,最大值在数组1中)。我想我应该使用for循环,但我不知道应该把它放在哪里,以及如何设置它以查看所有数组。

如果使用以下函数,数学函数
min
max
在这里非常有用:


如果我们在这里使用一点函数式编程而不是
来进行
循环,那将非常有趣:

d3.extent(dataset.reduce(function(a,b) { return a.concat(b.year) }, []))
您可以对这些值执行相同的操作。

Javascript现在在
Array
s上提供了一种方法,它将数组的数组展平为单个数组,并对每个元素应用转换函数:

var [min, max] = d3.extent(dataset.flatMap(d => d.value));
例如:

var输入=[
{id:“澳大利亚新西兰”,值:[47779048582548729296485502585117185265945389675505565635727571579126591635599216604267608954615615853856189614920],
{id:“CentralEurope”,值:[154873613344523130881283248131470913605461343907128551123778125187212440691233778128463912975101317861135971396681136144512787311343044],
{id:“东欧”,值:[441851635304643287987292564427751812672238254097524950362513372251537525407962544825981482637682262224127099742420427402482552132680226]}
];
var[min,max]=d3.extent(input.flatMap(d=>d.value));
控制台日志(分钟);
控制台日志(最大值)

谢谢,这可以工作,但会返回每个数组的最小值和最大值,可能我的问题不清楚,但我试图获得数组的最小值和最大值的组合,我会努力工作谢谢更新答案!我将Horam的方法标记为正确的,只是因为它更快(他的方法不涉及任何我不知道可能的for循环),但是是的,感谢更新:)
var [min, max] = d3.extent(dataset.flatMap(d => d.value));