在 Javascript 的二维数组中找到数字最大的数组

Find the array with the largest number in a 2d array with Javascript

这是我的尝试,效果很好,但我需要 return 包含最大数字的数组,而不是最大数字本身。

另外,我想知道是否有一种方法可以使用深度等于来比较二维数组中的内部数组。

function largestOfFour(arr) {
 for (var i = 0; i < arr.length; i++) {
  var largest = [0][0];
  for (var j = 0; j < arr[i].length; j++) {
   if (arr[i][j] > largest) {
    largest = arr[i][j];
   }
  }
 }

 return largest;

}

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

console.log(largest);

创建另一个变量并在记下最大数字的同时存储 arr[i] 数组。如果您只需要最大的数组(或用它替换 largestOrigin),您可以删除 largest 变量。

JavaScript

function largestOfFour(arr) {
    var largest = 0,
        largestOrigin = [];

    for(var i = 0; i < arr.length; i++){ 
        for (var j = 0; j < arr[i].length; j++) {
            if(arr[i][j] > largest){
                largest = arr[i][j];
                largestOrigin = arr[i];
            }
        }
    }
    return largestOrigin;
}

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

JSFiddle (live demo)

使用新的数组方法只是为了好玩:

  function largestOfFour(r){
    var biggest=Math.max.apply(null, r.join(",").split(",")); //merge arrays then find largest number in flat
    return  r.find( /./.test, RegExp("\b"+biggest+"\b") ); // find by matching element of sub-array to biggest flat array value
  }


  var largest=largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
  alert(largest); // shows "1000, 1001, 857, 1"

我也在研究那些 freecodecamp 篝火 :)。这是我的解决方案:

function largestOfFour(arr) {
 var max = [];
   for(var i = 0; i < arr.length; i++){
     max.push(Math.max.apply(Math, arr[i]));
  }

  return max;
}

在二维数组中查找最大数的简单方法

function largestOfFour(arr) {
  return arr.map(n => Math.max(...n));
}

函数说明:

  1. Array 的 map 方法将迭代并在每个项目上执行回调,并使用计算值填充数组
  2. Math 的max 方法将获得给定值集中的最大值
  3. 一旦计算出最大值,它将被推入数组arr