Javascript 检查数组中的值是否存在公共差异
我有一个示例数组 常数arr=[0,2,4,6] 我想检查它们是否有共同的区别,在上面的数组中是2,是 可能有更有效的方法来做到这一点。我尝试使用一个简单的for循环: 常数arr=[0,2,4,6];Javascript 检查数组中的值是否存在公共差异,javascript,Javascript,我有一个示例数组 常数arr=[0,2,4,6] 我想检查它们是否有共同的区别,在上面的数组中是2,是 可能有更有效的方法来做到这一点。我尝试使用一个简单的for循环: 常数arr=[0,2,4,6]; forlet i=0;我你可以这样做。最好在发现错误时立即停止,而不是测试所有值 常数arr=[0,2,4,6] var r=真 对于var i=1;i检查数字的总和是否达到所需的总和,以及其余数字是否与注释中所需的差值相同。这应该是一个单独的问题 加起来直到s>=总和。如果s不等于集合和,
forlet i=0;我你可以这样做。最好在发现错误时立即停止,而不是测试所有值 常数arr=[0,2,4,6] var r=真
对于var i=1;i检查数字的总和是否达到所需的总和,以及其余数字是否与注释中所需的差值相同。这应该是一个单独的问题 加起来直到s>=总和。如果s不等于集合和,则返回false 如果还剩下数字{ 设s=0, idx=arr.findIndexx=>s+=x>=sum+1 ifs!==总和返回false ifarr.length-idx<3返回真值 常数差=arr[idx+1]-arr[idx]
虽然++idx假设数组已排序,但使用.each可以非常简单地完成此操作 常数arr=[0,2,4,6]; 常数itvl=arr[1]-arr[0]; const result=arr.slice0,-1.everyn,i=> itvl===arr[i+1]-n
console.logresult;我假设您所说的差异是阶跃值。为此,首先查找前两个元素之间的差异;然后检查是否相同的差异适用于所有连续值
const arr = [0, 2, 4, 6];
let flag = true;
diff = arr[1] - arr[0];
for(let i = 1; i < arr.length-1; i++){
if(arr[i+1] - arr[i] != diff ){
flag = false;
break;
}
}
console.log(flag)
代码假设数组大小至少为2。如果不能保证这一点,则添加一个if保护。这是否回答了您的问题?@Justinas我认为OP不想检查数组是否有公约数。他们想通过数组检查连续项之间的差异是否相同。根据有关eg,我会说差异ce是2,我想用更数学的方法,检查一个差为2的算术序列,希望它清晰,a+n-1*d,d=2如果其中任何一个不匹配,立即返回false。实际上,如果差与2不同,你无法处理。他没有要求。他可能在学习作业或其他东西。他只是需要知道如何提前终止循环。他没有说差异总是2,他在上面的数组中写道,这是2,是的;就性能而言,您不会在发现错误时立即停止,因此这不是优化的。@DJ9114:它确实停止了。这是使用的好处之一。每一次;一旦证明不是每次迭代都重新开始,它就会停止rns true.,,可能是表达这个@dj的最干净的方式。没有问题。某些方法也以这种方式进行了优化。阅读slice在链接中所做的操作。知道任何一种方法都是很好的选择和升级!解决方案,尽管你不需要其他部分,如果出现错误,你会记录两次