Javascript 查找JSON的最大值并存储为变量

Javascript 查找JSON的最大值并存储为变量,javascript,json,d3.js,Javascript,Json,D3.js,我有一个d3图,它指定了Y轴上的范围,如下所示: var yScale = d3.scaleLinear() .domain([0, 1]) // input .range([height, 0]); // output // Data var dataset = [{ y: 0.1 }, { y: 0.6 }, { y: 0.6 }, { y: 0.7 }

我有一个d3图,它指定了Y轴上的范围,如下所示:

  var yScale = d3.scaleLinear()
    .domain([0, 1]) // input 
    .range([height, 0]); // output 
// Data
var dataset = [{
      y: 0.1
    },
    {
      y: 0.6
    },
        {
      y: 0.6
    },
    {
      y: 0.7
    }
  ];

var mymax = Math.max(dataset);
.domain([0, mymax]) // input 
但是,0到1的比例不是很有用。我想让它找出适合我的范围。我对这有点陌生,所以我想如果我做了这样的事情:

  var yScale = d3.scaleLinear()
    .domain([0, 1]) // input 
    .range([height, 0]); // output 
// Data
var dataset = [{
      y: 0.1
    },
    {
      y: 0.6
    },
        {
      y: 0.6
    },
    {
      y: 0.7
    }
  ];

var mymax = Math.max(dataset);
.domain([0, mymax]) // input 
然后我可以在我的数据集中找到最大值,然后将其输入我的.domain范围,如下所示:

  var yScale = d3.scaleLinear()
    .domain([0, 1]) // input 
    .range([height, 0]); // output 
// Data
var dataset = [{
      y: 0.1
    },
    {
      y: 0.6
    },
        {
      y: 0.6
    },
    {
      y: 0.7
    }
  ];

var mymax = Math.max(dataset);
.domain([0, mymax]) // input 
然而,我很感激我的尝试是错误的,因为我得到了回报。我想它可能指向字母Y,而不是我的数字


我觉得这不是问题的重复。

这是如何在给定数据结构中找到最大值的正确答案。我不知道为什么有人对此投了反对票。如果您可以使用箭头函数,可以将其缩短为
var mymax=Math.max.apply(Math,dataset.map(o=>o.y);
非常感谢您添加一个解释:需要多个函数参数,因此您需要调用它,例如:
Math.max(0.1,0.6,0.6,0.7);
。您可以将对象数组转换为带有的数字数组,对于给定的示例,该数组返回
[0.1,0.6,0.6,0.7]
。然后可以与一起使用。愚蠢的是,我必须在此处键入答案,因为有人错误地将其标记为重复。(以前可能也提出过类似的问题,但这绝对不是参考问题的重复。)@GerardoFurtado只是出于兴趣,为什么d3.max在这里不是正确的东西?@Jimmy与
Math.max
不同,
d3.max
接受数组。实际上
d3.max
是这里的最佳选择,只是使用访问器来指定属性。正如他所说,他只是出于兴趣才问的。而且,我已经说过我误读了,我也读了y重新打开了问题。我们可以继续吗?@x射线:我又误读了。如果我暂时忽略S.O.,我会更有用处,就像我现在开始做的那样。@GerardoFurtado谢谢你提供的信息:)
var mymax = Math.max.apply(Math, dataset.map(function(o) { return o.y; }));