Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript练习,在我看来很好,但它不起作用_Javascript_Arrays - Fatal编程技术网

Javascript练习,在我看来很好,但它不起作用

Javascript练习,在我看来很好,但它不起作用,javascript,arrays,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; } 基本上,我想从数组的最后一个元素开始,检查它是否与倒

这个练习是关于识别数组中的所有元素是否相同,如果相同,则返回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。我做错了什么/想错了什么


谢谢

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

上次运行时,i是0,因此您将数组[0]与数组[-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;
}

对于简化的
解决方案
,您可以使用
每种
方法

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

您可以创建一个方法,使用
ArrayUtils
检查数组中的输入

public boolean contains(final int[] array, final int key) {     
    return ArrayUtils.contains(array, key);
}

因此无法调试,但
i
的最后一次迭代将在您的代码中为0并停止。

在最后一次迭代中,
i
将为0…当然,您必须训练逻辑,但只需查找它就可以知道该语言可以做些什么XDChange
i>=0
i>0
@Pointy,未定义的否?
数组类型。查找(element=>element!==array[0])===='undefined'
可能更简单