我正在尝试Javascript练习,但遇到了问题。 我建立了一个函数来查找数组是否由相同的数字组成。 如果有唯一数字,则返回false。
这是我想出的,我不明白为什么它不起作用。
function isUniform(arr){
for (var i = 0; i < arr.length; i++) {
if (arr[i-1] !== arr[i]); {
return false;
}
}
return true;
}
为什么这不起作用?这是什么问题?我是一个完整的菜鸟!
感谢大师!
答案 0 :(得分:1)
第一次迭代将始终为return false
(除非未定义数组的第一个元素),因为当i
从0开始时,
if (arr[i-1] !== arr[i])
将始终解决
if (false)
因为arr[i-1]
解析为arr[-1]
,因此几乎可以肯定是undefined
。数组是零索引的,而不是-1
索引的。如果要使用for
循环,请改用i = 1
:
function isUniform(arr){
for (var i = 1; i < arr.length; i++) {
if (arr[i-1] !== arr[i]) {
return false;
}
}
return true;
}
console.log(isUniform([1, 1, 1]));
console.log(isUniform([1, 1, 2]));
或者您可以避免循环,而使用every
:
function isUniform(arr){
const [first] = arr;
return arr.every(item => item === first);
}
console.log(isUniform([1, 1, 1]));
console.log(isUniform([1, 1, 2]));