对我来说不错的Javascript练习,但是不起作用

时间:2018-11-05 14:25:56

标签: javascript arrays

该练习是关于确定数组中的所有元素是否相同,如果相同则返回true,否则返回false。下面是代码和编写代码的背后逻辑。

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

基本上我想从数组的最后一个元素开始,并检查它是否与倒数第二个元素相等。如果它们相等,则循环将从“ i”变量中减去1,然后“ if语句”将再次运行。当我达到-1时,循环将停止,这就是检查每个数组元素并且循环应结束的点,返回true。我在做什么/想错了吗?

谢谢!

4 个答案:

答案 0 :(得分:4)

i变为0时,您正在将arr[0]arr[-1]进行比较,这是错误的。您的检查条件应为i > 0

答案 1 :(得分:2)

最后一次运行时,i为0,因此您正在比较array [0]与array [-1],这是不正确的。您的布尔条件应为i> 0,这样可以避免出现此问题:

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

答案 2 :(得分:1)

您可以使用every方法来简化solution

const allEqual = arr => arr.every(x => arr[0] == x));

答案 3 :(得分:1)

您可以创建一个方法,使用const RootNavigator = createStackNavigator( { App, YourModal, }, { headerMode: 'none', mode: 'modal', transparentCard: true, }, ); 检查数组中的输入内容。

ArrayUtils

旅行因此无法调试,但是public boolean contains(final int[] array, final int key) { return ArrayUtils.contains(array, key); } 的最后一次迭代在您的代码中为0,然后停止。