Javascript检查数组中的项目是否连续

标签 javascript jquery arrays

假设我有一个数组,其中包含值 [1,2,3,6,7]。

如何检查数组以查看它是否包含 3 个连续的数字。例如,上面的数组包含 [1,2,3],所以这将在我的函数中返回 false。

        var currentElement = null;
        var counter = 0;

        //check if the array contains 3 or more consecutive numbers:
        for (var i = 0; i < bookedAppArray.length; i++) {
            if ((bookedAppArray[i] != currentElement) && (bookedAppArray[i] === bookedAppArray[i - 1] + 1)) {

                if (counter > 2) {
                    return true;
                }

                currentElement = bookedAppArray[i];
                counter++;
            } else {
                counter = 1;
            }
        }

        if(counter > 2){
            return true;
        } else{
            return false;
        }

最佳答案

这个解决方案

  • 检查数组的长度是否大于2,
  • 从位置 2 开始遍历数组
  • 获取索引前位置2和1的差值,
  • 检查绝对差是否为 1
  • 检查索引之前和索引位置 1 之间的差异是否等于差异,
  • 如果是,则返回 false,因为找到了连续的元素。
  • 如果不是,则将索引增加 1

function consecutive(array) {
    var i = 2, d;
    while (i < array.length) {
        d = array[i - 1] - array[i - 2];
        if (Math.abs(d) === 1 && d === array[i] - array[i - 1]) {
            return false;
        }
        i++;
    }
    return true;
}

document.write(consecutive([1]) + '<br>');             // true
document.write(consecutive([2, 4, 6]) + '<br>');       // true
document.write(consecutive([9, 8, 7]) + '<br>');       // false
document.write(consecutive([1, 2, 3, 6, 7]) + '<br>'); // false
document.write(consecutive([1, 2, 3, 4, 5]) + '<br>'); // false

关于Javascript检查数组中的项目是否连续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257152/

相关文章:

Javascript 推送数组高级

javascript - 在下划线模板中动态设置图像

javascript - 如何使用 yarn 将 NodeJS/React 应用程序部署到 Heroku?

javascript - Node.js API 在终端中返回 JSON,但在浏览器中不返回

javascript - 如何使用 javascript 从图像 URL 获取 Blob 数据

javascript - 尝试循环 ajax 加载调用

javascript - JS : How to trigger CSS changes on divs based on API information

php - 如何替换 php 数组中特定键的值?

java - 如何将 {0,0} 放入数组中并在满足 if 语句时更改它

php - 从我的网站 1 访问我的其他数据库到我的网站 2