如何找到数组数组中所有数组的最大值?

时间:2015-09-13 02:51:13

标签: d3.js

我正在尝试通过书籍和示例来学习D3。我正在研究的一个例子是位于http://bl.ocks.org/mbostock/3884955#index.html的简单(多)折线图。

我可以跟随大部分内容,但我无法理解这一点:

y.domain([
  d3.min(cities, function(c) { return d3.min(c.values, function(v) { return v.temperature; }); }),
  d3.max(cities, function(c) { return d3.max(c.values, function(v) { return v.temperature; }); })
]);

当我尝试自己编写代码时,使用示例作为备忘单,我想出了这个

y.domain([0, d3.max(data, function(d) { return d.temperature; })]);

因为我希望y范围从0到所有温度的最大值。

我相信我有两个问题:
1)是嵌套的分钟和最大值,因为它在查看数组中每个数组的最大值?
2)我是否正确地认为'城市'是整个数组,而价值是'城市'中温度的数组?

如果这个问题不是非常集中,请道歉。我相信我想弄清楚如何找到阵列数组的最大值。

1 个答案:

答案 0 :(得分:2)

嵌套的分钟和最大值是因为它查看了数组中每个数组的最大值吗?

是的!你是正确的城市json是一个数组,其中有另一个数组,其中包含键这里的想法是找到这个嵌套数组中的最低温度

d3.min(cities, function(c) { return d3.min(c.values, function(v) { return v.temperature; }); }),

我是否正确地认为这些城市'是整个数组,值是'城市内的温度数组'

是的,你是正确的再次将这个json复制到json formatter中,你将能够更好地理解JSON:

cities = [
   {
      "name":"New York",
      "values":[
         {
            "date":"2011-09-30T18:30:00.000Z",
            "temperature":63.4
         },
         {
            "date":"2011-10-01T18:30:00.000Z",
            "temperature":58
         },
         {
            "date":"2011-10-02T18:30:00.000Z",
            "temperature":53.3
         },
         {
            "date":"2011-10-03T18:30:00.000Z",
            "temperature":55.7
         },
         {
            "date":"2011-10-04T18:30:00.000Z",
            "temperature":64.2
         }
      ]
   },
   {
      "name":"San Francisco",
      "values":[
         {
            "date":"2011-09-30T18:30:00.000Z",
            "temperature":62.7
         },
         {
            "date":"2011-10-01T18:30:00.000Z",
            "temperature":59.9
         },
         {
            "date":"2011-10-02T18:30:00.000Z",
            "temperature":59.1
         },
         {
            "date":"2011-10-03T18:30:00.000Z",
            "temperature":58.8
         }
      ]
   },
   {
      "name":"Austin",
      "values":[
         {
            "date":"2011-09-30T18:30:00.000Z",
            "temperature":72.2
         },
         {
            "date":"2011-10-01T18:30:00.000Z",
            "temperature":67.7
         },
         {
            "date":"2011-10-02T18:30:00.000Z",
            "temperature":69.4
         }
      ]
   }
] 

希望这有帮助!