使用forLoop()在数组中寻找唯一数字

时间:2018-07-21 04:55:44

标签: javascript

我正在尝试Javascript练习,但遇到了问题。 我建立了一个函数来查找数组是否由相同的数字组成。 如果有唯一数字,则返回false。

这是我想出的,我不明白为什么它不起作用。

function isUniform(arr){
    for (var i = 0; i < arr.length; i++) {
        if (arr[i-1] !== arr[i]); {
            return false;
        }
    }     
    return true;
}

为什么这不起作用?这是什么问题?我是一个完整的菜鸟!

感谢大师!

1 个答案:

答案 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]));