Javascript 嵌套循环后返回结果

Javascript 嵌套循环后返回结果,javascript,arrays,loops,break,Javascript,Arrays,Loops,Break,我正试图找出如何让下面的代码将biggestNumber变量推送到largestNumbers变量,以便将largestoff的每个子数组中的最大数字作为largestNumbers数组返回 我在心里看到了这一点,认为我写的代码是正确的。这是我的思考过程: 1) LargestNumber设置为空数组 2) 创建一个for循环,该循环将在循环期间拉动每个子数组,并将其存储为PulledSubArray 3) 我需要在子数组中循环(拉动) 子阵列)具有for循环 4) biggestNumber变

我正试图找出如何让下面的代码将biggestNumber变量推送到largestNumbers变量,以便将largestoff的每个子数组中的最大数字作为largestNumbers数组返回

我在心里看到了这一点,认为我写的代码是正确的。这是我的思考过程:

1) LargestNumber设置为空数组

2) 创建一个for循环,该循环将在循环期间拉动每个子数组,并将其存储为PulledSubArray

3) 我需要在子数组中循环(拉动) 子阵列)具有for循环

4) biggestNumber变量设置为存储子数组中的最大数字,if语句设置为确定哪个数字最大,然后将该数字推送到largestNumbers数组

5) 中断内部for循环,然后对第二个子数组重复步骤

在没有给出整个挑战的答案的情况下,您能告诉我,为了实现最终结果,我缺少了哪些语法或元素吗

function largestOfFour(arr) {

  var largestNumbers = [];

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

   var pulledSubArray = arr[i];

    for (var n = 0; n > pulledSubArray.length; n++){

      var biggestNumber = 0;

      if (pulledSubArray[n] > biggestNumber){

        biggestNumber = pulledSubArray[n];

      } else if (pulledSubArray[n] < biggestNumber){

        largestNumbers.push(biggestNumber);
        break;

      }         
    }           
  }                              

 return largestNumbers;

}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
函数最大四(arr){
var最大数=[];
对于(变量i=0;i>arr.length;i++){
var pulledSubArray=arr[i];
对于(var n=0;n>pulledSubArray.length;n++){
var biggestNumber=0;
if(拉取子阵列[n]>最大数){
biggestNumber=pulledSubArray[n];
}else if(pulledSubArray[n]
如果要在每个子数组中获取最大的数字:

var数据=[[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001001857,1];
函数最大四(数据){
返回数据.map(函数(d){
返回Math.max.apply(null,d)
})  
}
console.log(最大四个(数据))
您的循环构造是错误的。纠正他们。函数的简单版本如下(ECMAScript 6)

如果你想坚持你的想法

函数最大四(arr){
var最大数=[];
对于(var i=0;i最大数){
biggestNumber=pulledSubArray[n];
}
}
largestNumbers.push(biggestNumber);//将最大的数字推到内部循环之外
}
返回最大的数字;
}
控制台日志(最大四个)([
[4, 5, 1, 3],
[13, 27, 18, 26],
[32, 35, 37, 39],
[1000, 1001, 857, 1]
]));问题在于代码:

  • 逻辑
  • if(pulledSubArray[n]>biggestNumber){
    biggestNumber=pulledSubArray[n];
    }else if(pulledSubArray[n]
    对于数组
    [4,5,1,3]
    ,对于第二次迭代,
    biggestNumber
    保持
    4
    ,而
    pulledSubArray[n]
    将保持
    5
    。在这种情况下,您将推送该值并中断循环。但您没有检查整个阵列。所以你不会得到准确的结果

  • 循环条件
  • for(变量i=0;i>arr.length;i++){
    
    这将永远不会进入循环。它应该是
    i

  • 变量声明
  • for(var n=0;n>pulledSubArray.length;n++){
    var biggestNumber=0;
    if(拉取子阵列[n]>最大数){
    
    变量应该在循环外声明。您当前正在每次迭代中将其值设置为
    0
    。因此,如果(pulledSubArray[n]>biggestNumber)
    始终返回true,您最终将获得最后一个值


    更新代码:

    函数最大四(arr){
    var最大数=[];
    对于(变量i=0;i最大数){
    biggestNumber=pulledSubArray[n];
    }
    }
    最大数字。推送(最大数字)
    }
    返回最大的数字;
    }
    var list=最大四个([
    [4, 5, 1, 3],
    [13, 27, 18, 26],
    [32, 35, 37, 39],
    [1000, 1001, 857, 1]
    ]);
    
    console.log(list)
    您遇到的问题是什么?是否要从每个嵌套数组中获取最大的数?您的
    循环条件是错误的。请重新查看它们。您的es6示例可以使用更少的
    ()
    (数据)
    可以是
    数据
    ()
    是可选的,如果您只有一个参数。
    for (var i = 0; i > arr.length; i++){
                      ^
                 Wrong condition
    
    const largestOfFour = (arr) => arr.map(el => Math.max(...el));