所以我知道这段代码在做什么,它正在检查代码是否是" uniform"例如a,a,a,a,a,a
或1,1,1,1,1,1
,如果不是,则返回虚假陈述。但是,我不确定这个等式是如何工作的。大多数情况下,我对array[0]
感到困惑,为什么变量为i = 1
。有人可以告诉我这里发生的事情及其原因吗?
function isUniform(arr){
var first = arr[0];
for(var i = 1; i < arr.length; i++){
if(arr[i] !== first){
return false;
}
}
return true;
}
答案 0 :(得分:2)
使用//
希望帮助
function isUniform(arr){
var first = arr[0]; //storing the first value in the array in variable 'first'
//arr.length gives the number of elements in the array
//looping between numbers 1 and the end of the length of array (array.length)
for(var i = 1; i < arr.length; i++){
if(arr[i] !== first){ //checking if current value (arr[i]) is equal to first value
return false;//if it is not equal returning false and return ends the loop and function
}
//if all the values are equal the above if condition never runs
}
//if above if condition never runs, this statement runs and returns true
return true;
}
答案 1 :(得分:1)
JavaScript中的数组是从零开始的。因此行
var first = arr[0]
表示传递给数组的arr
参数的第一个元素。它永远不会改变。
循环
for(var i = 1; i < arr.length; i++)
遍历除第一个元素数组之外的所有元素,从第二个元素(arr[1]
)开始到最终元素。在此过程中,语句if(arr[i] !== first)
只是将每个数组元素(第一个除外)与存储在first
中的第一个数组元素进行比较。如果任何一个不匹配,则返回false,否则返回true。如果输入数组是[1,2,3,4,5]
,那么arr[0]=1, arr[1]=2, arr[2]=3...
和第一个数组元素(以及变量first
)的值将是1
,并且循环将迭代其余的数组值(2, 3, 4, and 5
)。因此,在第一次迭代时它将返回false,因为1不等于2.
这个函数没有任何花哨或特殊之处,因为它所做的只是向下走一个数组的值,比较元素。
答案 2 :(得分:0)
javascript中的长度不是0。所以下面的数组长度为4.
[1,2,3,4]
另一方面,数组是基于0的,所以为了得到这个数组的第4个元素你会做arr [3],它等于4.方括号内的数字表示数组中的位置,而不是值。
答案 3 :(得分:0)
首先,我们将数组的第一个元素存储到变量first
中。然后我们开始循环遍历数组元素的其余部分(这就是i
以1
开头的原因,因为不需要将元素与自身进行比较)。如果当前元素arr[i]
与第一个元素first
不同(表示数组不均匀),则函数返回false
(当函数返回时将立即退出,因此将会不再与数组的其他元素进行比较)。如果我们遍历数组的所有元素并且我们从循环中出来然后我们没有找到任何不同的值,那么数组是统一的,因此我们返回true
并退出函数。