循环通过Array,返回最大的数字

时间:2018-02-10 09:22:42

标签: arrays sorting

对于我的生活,我无法理解为什么这不起作用。 我试图找到数组中最大的数字。 Plz解释我在这里做错了什么。

     function largestOfFour(arr) {
     var maxArry = [];
     for (let i = 0; i < arr.length; i++) {
     var Max = 0;
     for (let y = 0; y < arr.length; y++) {
        var currentElement = arr[i][y];
        if (currentElement >= Max) {
            Max = currentElement;
        }
    }
    console.log(Max);
    }
    }

    largestOfFour([
    [4, 5, 6, 7, 9],
    [9, 4, 5, 64, 3],
    [4, 4, 6, 8, 35],
    [3, 5, 76, 54, 3]
    ]);

3 个答案:

答案 0 :(得分:0)

试试这个:

function largestOfFour(arr) {
  var largestNr = 0;
  arr.map(child => {
    var largestChild = Math.max(...child)
    if (largestChild > largestNr) largestNr = largestChild
  })
  return largestNr;
}

或者如果您关心Spread opearator的IE浏览器支持,请使用:

var largestChild = Math.max.apply(null, child)

现在,Array.Map()更可靠,因为它更容易使用,更不容易出错:)

您可以在此处阅读更多内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

答案 1 :(得分:0)

尝试使用排序数组:

var Arr = [1, 7, 2, 8, 3, 4, 5, 0, 9];

for (var i = 1; i < Arr.length; i++)
    for (var j = 0; j < i; j++)
        if (Arr[i] > Arr[j]) {
          var x = Arr[i];
          Arr[i] = Arr[j];
          Arr[j] = x;
        }

console.log(Arr);

然后在数组中获得四个第一项。

答案 2 :(得分:0)

Max的变量赋值需要超出for循环,因为每次完成内循环时,Max将在迭代外循环时重置为0。 / p>