返回每个子数组中具有最大数字的数组

时间:2018-04-20 15:42:04

标签: javascript arrays algorithm

嘿同事们,

我会正确的,正如你从标题中猜到的那样,我想返回一个由每个子数组中所有最大数字组成的数组。我有正确的代码。但是,有一行代码我不明白。我使用了freecodecamp的提示。 我不理解的那条线被注释掉//这是我不理解的那条线。特别是arr [i] [0]上的[0]。什么是[0]的目的。当我拿出它来查看控制台上显示的结果时,它会按原样返回数组,而不是每个子数组中包含所有最大数字的数组。

谢谢,

function myFunc(arr) {
    var resultArray = [];
    for (var i = 0; i < arr.length; i++) {
        var largstNumInEach = arr[i][0]; //this is the line i dont understand.
        for (var j = 0; j < arr[i].length; j++) {
            if(arr[i][j] > largstNumInEach) {
                largstNumInEach = arr[i][j]
            }
        }
        resultArray[i] = largstNumInEach;
   }

   return resultArray;
}

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

console.log(list);

2 个答案:

答案 0 :(得分:0)

它将从第0个索引获取元素。这是它的工作方式。

此行for (var i = 0; i < arr.length; i++) {将遍历此数组。

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

再次由子数组组成。

因此,arr[i][4, 5, 1, 3][13, 27, 18, 26] ....

因此,当i=0 arr[i] [4, 5, 1, 3] i=1arr[i] [13, 27, 18, 26]arr[i][0],等等。

因此arr[0][0]将是相应数组

的第0个索引处的元素

对于i = 0,arr[1][0]将为4,对于i = 1,Math.max将为13,依此类推

说过可以使用数组映射函数和function myFunc(arr) { return arr.map(function(item) { return Math.max.apply(null, item) }) } var list = myFunc([ [4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1] ]); console.log(list);

简化代码

&#13;
&#13;
dateCliente
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这是一个有效的功能:

const myFunc = (arr) => arr.map(innerArray => Math.max(...innerArray));

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

console.log(list);