Javascript 在子数组中查找最大数有困难

Javascript 在子数组中查找最大数有困难,javascript,arrays,Javascript,Arrays,这是我目前的代码: var largestNumbers = new Array(4); function largestOfFour(arr) { var biggest = Math.max.apply(null, largestOfFour) for (var index in arr) { for(var i=0; i < arr[index].length; i++){ if (arr[index] > bigge

这是我目前的代码:

var largestNumbers = new Array(4);

function largestOfFour(arr) {
    var biggest = Math.max.apply(null, largestOfFour) 
    for (var index in arr) {
        for(var i=0; i < arr[index].length; i++){
            if (arr[index] > biggest){
                arr[index].push(largestNumbers);
            }
            else if (arr[index] < biggest) {
                arr[index].splice(0, 1);
            }
        }
    }
    return largestNumbers;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
var largestNumbers=新数组(4);
功能最大四(arr){
var max=Math.max.apply(null,最大四个)
对于(arr中的var指数){
对于(var i=0;i最大值){
arr[index].push(最大数);
}
else if(arr[索引]<最大值){
arr[index].拼接(0,1);
}
}
}
返回最大的数字;
}
最大的四个([[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001001857,1]);
我的目标是找到每个子数组中的最大值,然后将这些值放入另一个数组,然后返回该值。我一直在四处寻找“如何从阵列中提取子阵列”之类的东西,这导致我使用了拼接功能。我不确定我是否正确使用了它,但我正在尽我所能,因为我已经在这个问题上坚持了两天了。如果有人能引导我走上解决这个问题的道路,我将不胜感激。非常感谢大家


此外,我还利用这个网站来引导我前进。在页面的后半部分,有一段代码试图解决与我类似的问题

只需使用一个简单的嵌套循环即可。找到每个内部数组的最大数字并将其添加到结果中:

function largestOfFour(arr) {
    var result = [];

    for(var i = 0; i < arr.length; i++){
        var max = 0;
        var inner = arr[i];
        for(var j = 0; j < inner.length; j++){
            if(inner[j] > max)
                max = inner[j];
        }
        result.push(max);
    }

    return result;
}

var output = largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
// [5, 27, 39, 1001]
函数最大四(arr){
var结果=[];
对于(变量i=0;i最大值)
最大值=内部[j];
}
结果:推力(最大值);
}
返回结果;
}
var输出=最大的四个([[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001001857,1]);
// [5, 27, 39, 1001]

只需使用一个简单的嵌套循环即可。找到每个内部数组的最大数字并将其添加到结果中:

function largestOfFour(arr) {
    var result = [];

    for(var i = 0; i < arr.length; i++){
        var max = 0;
        var inner = arr[i];
        for(var j = 0; j < inner.length; j++){
            if(inner[j] > max)
                max = inner[j];
        }
        result.push(max);
    }

    return result;
}

var output = largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
// [5, 27, 39, 1001]
函数最大四(arr){
var结果=[];
对于(变量i=0;i最大值)
最大值=内部[j];
}
结果:推力(最大值);
}
返回结果;
}
var输出=最大的四个([[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001001857,1]);
// [5, 27, 39, 1001]
var largestNumbers=new Array();
功能最大四(arr){
对于(变量i=0;i
var largestNumbers=new Array();
功能最大四(arr){
对于(变量i=0;i

  • 用于通过在第一级上循环来创建新阵列
  • 用于从数字列表中获取最大值
  • 用于将数组转换为Math.max中的参数
函数最大四(arr){
返回arr.map(函数(数组){
返回Math.max.apply(数学,数组)
});
}
var myArray=[
[4, 5, 1, 3],
[13, 27, 18, 26],
[32, 35, 37, 39],
[1000, 1001, 857, 1]
];
log(最大四个(myArray))
  • 用于通过在第一级上循环来创建新阵列
  • 用于从数字列表中获取最大值
  • 用于将数组转换为Math.max中的参数
函数最大四(arr){
返回arr.map(函数(数组){
返回Math.max.apply(数学,数组)
});
}
var myArray=[
[4, 5, 1, 3],
[13, 27, 18, 26],
[32, 35, 37, 39],
[1000, 1001, 857, 1]
];

log(最大四个(myArray))使用Math.max.apply()的方法,您可以使用一个循环作为参数遍历数组

function largestOfFour(arr){
   var result = [];

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

  return result; 
} 
函数最大四(arr){
var结果=[];
对于(变量i=0;i
编辑:
正如@Jeff Shaver发布的,您应该使用函数返回结果数组。

使用Math.max.apply()方法,您可以使用一个循环作为参数遍历数组

function largestOfFour(arr){
   var result = [];

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

  return result; 
} 
function largestOfFour(arr) {
    return arr.reduce(function(p, c, index, arr){
        p.push(Math.max.apply(null, c));
        return p;
    }, []);
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
函数最大四(arr){
var结果=[];
对于(变量i=0;i
编辑:
正如@Jeff Shaver发布的,您应该使用该函数返回结果数组。

即使您也可以这样编码,创建一个新数组,显示在它们中

function largestOfFour(arr) {
    return arr.reduce(function(p, c, index, arr){
        p.push(Math.max.apply(null, c));
        return p;
    }, []);
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
function largestOfFour(arr) {
  // You can do this!
  var newArray=[];
  for(i=0;i<arr.length;i++){
    newArray.push(Math.max.apply(Math,arr[i]));

  }
  return newArray;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
函数最大四(arr){
//你能做到!
var newArray=[];

对于(i=0;i,即使您也可以这样编码,创建一个新的数组来显示它们

function largestOfFour(arr) {
  // You can do this!
  var newArray=[];
  for(i=0;i<arr.length;i++){
    newArray.push(Math.max.apply(Math,arr[i]));

  }
  return newArray;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
函数最大四(arr){
//你能做到!
var newArray=[];

对于(i=0;i应用简单嵌套循环逻辑

function largestOfFour(arr) {

var maxArray = [];

for(var i = 0; i < arr.length; i++) {

var maxE = 0;

   for(var j = 0; j < arr.length; j++) {

      if(maxE < arr[i][j]) {

      maxE = arr[i][j];

   }

 }

   maxArray.push(maxE);

 }
  arr = maxArray;
  return arr;

 }

 largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
函数最大四(arr){
var maxArray=[];
对于(变量i=0;i
或者试试这个

function largestOfFour(arr) {

var maxArray = [];


for(var i = 0; i < arr.length; i++) {

 var maxE = Math.max(...arr[i]);          // this spread is only available in ES6 so can be  replaced by --> Math.max.apply(null, arr[i])

  maxArray.push(maxE);
}

arr = maxArray;

return arr;

}


 largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
函数最大四(arr){
var maxArray=[];
对于(变量i=0;iMath.max.apply(null,arr[i])替换
maxArray.push(maxE);
}
arr=maxArray;
返回arr;
}
最大的四个([[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001001857,1]);

应用简单嵌套循环的逻辑

function largestOfFour(arr) {

var maxArray = [];

for(var i = 0; i < arr.length; i++) {

var maxE = 0;

   for(var j = 0; j < arr.length; j++) {

      if(maxE < arr[i][j]) {

      maxE = arr[i][j];

   }

 }

   maxArray.push(maxE);

 }
  arr = maxArray;
  return arr;

 }

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