提问者:小点点

如何验证数组成员是否连续?


如何验证数组成员是否“连续”?

例如,Array[1,3,4,5,6]不是一个连续数组,因为它缺少数字2,这将完成递增的顺序序列。哪些JavaScript数组方法可以成为这种验证的好候选者?

我尝试过JavaScript数组方法,例如“. map”、“.每一个”、“.一些”,但没有成功。

   let values = [1,3,4,5,6];

   let result1 = values.map(x => x > 5);
   console.log('value of result1 : ', result1);
   Result: "value of result1 : ", [false, false, false, false, true]

   let result2 = values.some(x => x > 5);
   console.log('value of result2 : ', result2);
   Result: "value of result2 : ", true
   
   let result5 = values.every(x => x > 4);
   console.log('value of result5 : ', result5);
   Result: "value of result5 : ", false

谢谢…


共3个答案

匿名用户

使用函数all with of as代码:

values.every((num, i) => i === values.length - 1 || num === values[i + 1] -1 )
let values = [1,3,4,5,6];
console.log(values.every((num, i) => i === values.length - 1 || num === values[i + 1] -1 ));

匿名用户

这应该快速且易于理解:

const isConsecutive = (array) => {
  for (let i = 1; i < array.length; i++) {
    if (array[i] !== array[i - 1] + 1) {
      return false
    }
  }
  return true
}

我们从索引1开始,将当前元素与前一个元素进行比较。

匿名用户

一个简单的循环也可以提供帮助。

function continuos(arr) {
  let prev = arr[0];
  for (var i = 1; i < arr.length - 1; i++) {
    if (prev + 1 !== arr[i]) return false;
    prev = arr[i];
  }
  return true;
}

let values = [1, 3, 4, 5, 6];
console.log(continuos(values));