首页 > 解决方案 > 使用 forLoop() 在数组中查找唯一编号

问题描述

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

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

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

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

谢谢大师!

标签: javascript

解决方案


第一次迭代将始终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]));


推荐阅读