高阶函数变量undefined javascript

Bondifrench

我正在尝试从对象数组中获取元素的最大值:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章