所以我知道这段代码在做什么,它正在检查代码是否"统一",例如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;
}
使用//
在代码中给出了注释,希望它有所帮助
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;
}
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。
这个函数没有什么花哨或特别的,因为它所做的只是沿着数组的值向下走,比较元素。
首先,我们将数组的第一个元素存储到变量 first
中。 然后我们开始循环数组的其余元素(这就是为什么i
以1
开头,因为没有必要将元素与自身进行比较)。如果当前元素arr[i]
与第一个元素first
不同(意味着数组不统一),则函数返回false
(当函数返回时,它将立即退出,因此不会再与数组的其他元素进行比较)。如果我们遍历数组的所有元素并且我们退出循环,那么我们没有找到任何不同的值,因此数组是均匀的,因此我们返回true
并退出函数。
JavaScript 中的长度不是从 0 开始的。因此,以下数组的长度为 4。
[1,2,3,4]
另一方面,数组是基于 0 的,所以要获得这个数组的第 4 个元素,你需要做 arr[3],等于 4。方括号内的数字表示数组中的位置,而不是值。