我正在尝试从对象数组中获取元素的最大值:
var graph = {};
graph.data = [
{x: 2008, y: 7.2},
{x: 2009, y: 8.1},
{x: 2010, y: 7.7},
{x: 2011, y: 6.8},
{x: 2012, y: 6.7}
];
为了获得最大的收益,我使用以下方法:
var highest = graph.data[0].y;
for (var i = graph.data.length - 1; i >=1; i--) {
highest = Math.max(highest, graph.data[i].y);
}
这给了我正确的结果。但是,当我尝试制作高阶函数时,可以重用它:
var getMax = function (arr, para) {
var highest = arr[0].para;
for (var i = arr.length; i >= 1; i--) {
highest = Math.max(highest, arr[i].para);
}
}
我尝试像这样使用它:
getMax(graph.data, y);
我得到一个错误,说Uncaught: "Reference Error: y is not defined"
,有什么想法吗?我确实尝试使用方括号表示法而不是句点“。”,但这没有用
试试这个:
var getMax = function (arr, para) {
var highest = arr[0][para];
for (var i = arr.length - 1; i >= 1; i--) {
highest = Math.max(highest, arr[i][para]);
}
return highest;
}
getMax(graph.data, 'y');
您不能仅y
因为y
未定义而通过,所以将“ y”作为字符传递。另外,您需要从函数中返回最高值,并且需要从以下位置开始循环length - 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句