检查行数组中的3个值是否相同

Nor*_*orx 3 javascript arrays

我想检查我的数组是否有3个连续的相同值.

例如

var arr = ["g", "z", "z", "z" ]; // Must be true

var arr = ["g", "z", "z", "v" ,"b", "b", "b"]; // Must be true

var arr = ["z", "g", "z", "z"]; // Must be false
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

我们怎么检查呢?

faf*_*afl 5

可能最高效的方法是仅对输入数组进行一次迭代并计算连续相等元素的条纹.找到足够长的序列后,立即返回true.到达目的地时,返回false.

function hasConsecutive(arr, amount) {
    var last = null;
    var count = 0;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] != last) {
            last = arr[i];
            count = 0;
        }
        count += 1;
        if (amount <= count) {
            return true;
        }
    }
    return false;
}

console.log(hasConsecutive(["g", "z", "z", "z"], 3))
console.log(hasConsecutive(["g", "z", "z", "z"], 4))
Run Code Online (Sandbox Code Playgroud)