查找数组数组中的最大数字

时间:2017-01-31 15:54:02

标签: javascript arrays

JS功能:

function largestOfFour(arr) {


var biggest = 0;
var newArray = [];

for(var i = 0; i < arr.sort().reverse().length; i++){
  for(var j = 0; j < arr[i].length; j++){

    if(biggest < arr[i][j]){
      biggest = arr[i][j]; // problem after this
      //newArray.push(biggest);  this will add the first element in each sub-array
      // result [4,5,13,27,32,35,37,39,1000,1001]
    }

  }
}

return newArray;

}

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


//  Expected Output:

// [5, 27, 39, 1001]

我很难过。我如何添加或更改任何内容以获取每个子数组中的最大数字,并使用for-loops将该数字添加到newArray

5 个答案:

答案 0 :(得分:3)

因为你想使用for循环:

var largestOfFour = (arr) => {
  let largest = [];
  for(let i = 0; i < arr.length; i++) {
    largest[i] = arr[i].sort((a,b) => b-a)[0];
  }
  return largest;
}

这将做的是对内部数组进行排序并抓住第一个数组。

答案 1 :(得分:2)

您可以使用map()代替for循环。

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

function arrMax(data) {
  return data.map(e => Math.max.apply(null, e))
}
console.log(arrMax(arr))

答案 2 :(得分:1)

您可以使用Math.max的传播语法。

&#13;
&#13;
function arrMax(data) {
    return data.map(a => Math.max(...a))
}

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

console.log(arrMax(arr));
&#13;
&#13;
&#13;

答案 3 :(得分:0)

也许不是最好的,但这应该有用

function largestOfFour(series) {
   return series.map(function (serie) {
      return Math.max.apply(null, serie);
      // return Math.max(...serie);
   });
}

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

答案 4 :(得分:0)

对于非常大的数组和子数组项目,我猜这将是最有效的..

&#13;
&#13;
var arr = [[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]],
    res = arr.map(a => a.reduce((p,c) => p > c ? p : c));
console.log(res);
&#13;
&#13;
&#13;