Javascript练习,在我看来很好,但它不起作用
这个练习是关于识别数组中的所有元素是否相同,如果相同,则返回true;如果不相同,则返回false。下面是代码&我编写代码背后的逻辑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; } 基本上,我想从数组的最后一个元素开始,检查它是否与倒
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…当然,您必须训练逻辑,但只需查找它就可以知道该语言可以做些什么XDChangei>=0
到i>0
@Pointy,未定义的否?数组类型。查找(element=>element!==array[0])===='undefined'
可能更简单