比较数组数组以检查数组在Javascript中是否有序

比较数组数组以检查数组在Javascript中是否有序,javascript,arrays,Javascript,Arrays,我有一个这样的数组,常量数组=[[1,5],[7,9],[10,14];我需要检查一下阵列是否正常 基本上,对于提供的数组,我需要将第一个数组的第二个值5与第二个数组的第一个值7进行比较,然后使用该值使表单无效 如果数组的顺序为或,则常量数组=[[1,5]、[6,9]、[10,14];它返回false,通过验证,如果不通过,验证失败,返回true 到目前为止,我做过类似的事情 const arrayIdxZeroValues = []; const arrayIdxOneValues = [];

我有一个这样的数组,常量数组=[[1,5],[7,9],[10,14];我需要检查一下阵列是否正常

基本上,对于提供的数组,我需要将第一个数组的第二个值5与第二个数组的第一个值7进行比较,然后使用该值使表单无效

如果数组的顺序为或,则常量数组=[[1,5]、[6,9]、[10,14];它返回false,通过验证,如果不通过,验证失败,返回true

到目前为止,我做过类似的事情

const arrayIdxZeroValues = [];
const arrayIdxOneValues = []; 
array.forEach((arr,idx) => {
  arrayIdxZeroValues.push(arr[0])
  arrayIdxOneValues.push(arr[1])
})
这很好地分离了这些值。然后我考虑使用.shift删除arrayIdxZeroValues的第一个值,因为它永远不需要进行比较,但我觉得这是一个很粗糙的方法,我不确定这是正确的方法。也许吧。减少以比较输出阵列,但我无法使其正常工作

任何指导都将不胜感激


谢谢

您可以重新检查前一个数组的最后一个值加上一个值的实际值,而忽略对第一个内部数组的检查

常数 inOrder=array=>array.every[v],i,a=>!i | a[i-1][1]+1==v; console.loginOrder[[1,5],[7,9],[10,14];
console.loginOrder[[1,5],[6,9],[10,14] 使用array.slice创建从第二个子数组开始的数组。使用Array.some并检查当前子数组的第二项是否等于或小于原始数组当前索引i处的子数组第二项。通过这种方式,您可以将第二个与第一个进行比较,将第三个与第二个进行比较,依此类推

false-表示验证已通过 true-表示验证失败

const isFailed=arr=>arr.1 .一些[n],i=>n!==arr[i][1]+1 console.logisFailed[[1,5],[6,9],[10,14]//false
console.logisFailed[[1,5],[7,9],[10,14]//truel非常感谢您的帮助!如果你有时间的话,我希望你能解释一下这个实现。但是,当没有差距的时候,我仍然会得到一个真实的返回值。常量数组=[[1,5],[6,9],[10,14]]看起来像是真的。你想要假的吗?为什么?因为我需要确定子阵列是否连续。在您的示例数组中,5和7之间有一个间隙,因此它应该返回true,正如它所做的那样。在我的示例中,没有间隙,5到6,9到10,等等。这将返回false,表示子阵列之间没有间隙。是否只需检查间隙?或者如果数组中的值大于第一个值?谢谢Ori,但我不相信根据标准这是可行的。第一个数组[1,5]需要以6[6,9]开头才能通过验证。给定该阵列,第三个阵列需要以10、[10,14]开始,以此类推,子阵列的数目不确定。因此,最后一个和第一个之间的距离应始终为1?是的。基本上是连续的。子数组值表示范围,包括下限值和上限值。它们不能重叠,例如,[[1,4],[4,7],……]不符合条件。第二个子阵列需要是5,[5,7]。如果是[6,7],也不符合条件。子阵列的数量没有限制。更新了答案。那是用来干什么的?为什么你希望符合标准时为假,不符合标准时为真?再次感谢!我在表单验证中使用它。验证的工作方式是,如果返回true,则抛出一个表单错误。例如,如果输入字段是必需的,且值==,则逻辑返回true,表单呈现UI消息。