我想了解这个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]
进行比较?但我不确定。
有人可以澄清一下吗?
很抱歉,如果这是一个愚蠢的问题,我只是一个初学者,并提前感谢你。
答案 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];