JavaScript查找数组数组中的最大整数

时间:2015-08-06 23:09:14

标签: javascript

function largestOfFour(arr) {
    var newArray = [];
    for(var i =0; i <=arr.length-1; i++){
        console.log(arr[i]);
        newArray[i] = Math.max(arr[i]);
    }
    console.log(newArray);
              // You can do this!
    return newArray;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

所以即使我在NaN函数中提供了一个参数,我也不明白为什么我会得math.max。在for循环中的console.log中,我得到主数组中的每个数组都要显示。这意味着如果我在max函数中使用相同的arr[i],它应该给我该子数组的最大值。

5 个答案:

答案 0 :(得分:3)

您正在将数组传递给Math.max并期望它返回该数组中的最大值。

但是,Math.max在其参数中返回最大值。所以使用

var newArray = [];
for(var i =0; i < arr.length; ++i)
  newArray[i] = Math.max.apply(void 0, arr[i]);

在ES6中,您可以使用arrow functionsspread operator来简化:

arr.map(a => Math.max(...a));

答案 1 :(得分:2)

它不会那样工作。 Math.max期望单独的数字。您可以使用apply

获得所需的输出
function largestOfFour(arr) {
    return arr.map(function(subArr){
        return Math.max.apply(Math, subArr);
    });
}

答案 2 :(得分:0)

如果你想要最终的最大值,请执行此操作。

var original = [[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]];
Math.max.apply(null, original.map(function(arr) { return Math.max.apply(null, arr); }));

或者如果你想要每个数组的最大值,只需要

original.map(function(arr) { return Math.max.apply(null, arr); });

答案 3 :(得分:0)

使用lodash

var x = ([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
_.flatten(x).max();

答案 4 :(得分:-1)

编辑: 为了向数组添加值,我建议使用push方法。如: NewArray.push(Math.max(...子[I]));或者newarray.push(math.max.apply(null,sub [i])。 另一种方法是,在声明数组时,它会占用大小: Var newArray = new Array(arr.length); 在javascript中有这个新的传播运算符(...)!