需要对提供的代码进行一些澄清

时间:2017-12-28 22:27:59

标签: javascript arrays

我想了解这个JavaScript代码

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

var main = [];
var long;

for(var i=0; i<arr.length; i++){
    long = arr[i][0]; //setting the long var first element of array
    for(var j=0; j<arr.length; j++){
        //comparing first elelment of array (long) with arr[i][j] ie dynamic
        if(arr[i][j] > long) {
             long= arr[i][j];
        }
    }
     main.push(long);
}
return main;

除了long = arr[i][0];部分之外,我已经理解了大部分内容。

我理解在if声明中我们将arr[i][j]arr[i][0]进行比较,但问题是我不明白计算机是如何比较它的。

我检查了arr[i][0],它给出了arr数组中所有数组的第一个元素。

我猜它是将每个值与arr[i][j]进行比较?但我不确定。

有人可以澄清一下吗?

很抱歉,如果这是一个愚蠢的问题,我只是一个初学者,并提前感谢你。

2 个答案:

答案 0 :(得分:1)

long = arr[i][0];正在将值arr[i][0]分配给var long。这是将每个数组的第一个值设置为最长值。然后它将迭代数组的其余值,如果它找到大于long的值,它将使用此代码块将该值赋给long

if(arr[i][j] > long) {
     long= arr[i][j];
}

然后,完成处理数组的其余部分。

最后,该数组的最大值long将被推送到main

答案 1 :(得分:0)

此代码段正在此2D数组中搜索每个嵌套数组的最大值。在初始赋值操作long = arr[i][0]上,作者在外部循环的每次迭代中将每个嵌套数组的第一个元素分配给long。在嵌套(内部)循环的每次迭代中,我们逐步遍历嵌套数组,将每个元素与long指向的(此嵌套数组的第一项)进行比较(如果该值大于long(谓词满足))而不是将其推送到main,否则继续遍历此数组搜索最大值;如果long是最大的,则将其推送到main。这是一种在2D维数组中找到最大值的算法。

在外部循环的每次迭代中,long正在反弹(引用一个新值,即嵌套数组)。

输出结果为:

main = [5, 27, 39, 1001];