Javascript数组:如果数组连续包含n次值,则返回true

时间:2017-10-02 12:51:51

标签: javascript arrays

我想检查一个数组,如果它连续包含n次值。

例:
var array = [true,true,true,true,false]; ==>如果真的连续4次

,则为true var array = [true,false,false,true,true]; ==>假

5 个答案:

答案 0 :(得分:0)

你需要一个计数器和一个量词,比如Array#some。然后检查true上的值和增量或将计数器重置为零。

function check4(array) {
    var count = 0;
    return array.some(function (a) {
        return a ? ++count === 4 : count = 0;
    });
}

console.log(check4([true, true, true, true, false]));  // true
console.log(check4([true, true, true, false, true]));  // false
console.log(check4([true, false, false, true, true])); // false

答案 1 :(得分:0)

这可以通过reduce:

来实现
const spree = array.reduce((acum, el) => el === val ? acum + 1 : 0, 0);
if (spree > 4) ...

答案 2 :(得分:0)

你可以这样做 - 这个函数接受一个数组,你要检查的次数,以及你正在测试的值。

     function check (arr, number,val) {
  result=false;
    counter=1;
    for (i=1; i<arr.length; i++) {
        if (arr[i]===arr[i-1]) {counter++;} else {counter=1;}
        console.log(counter);
        if (counter>=number) {result=true;}
    }
    return result;
};

当然,有更优雅的方式(你可以打破你发现错误的那一刻),并且可以更优雅地处理计数器。

答案 3 :(得分:0)

最短的一个:

var has4True = function(arr){ 
    return /(true){4}/.test(arr.join('')); 
};

console.log(has4True([false, true, true, true, true, false]));
console.log(has4True([true, false, false, true, true]));

答案 4 :(得分:0)

var testArray = [true, true, true, true, false];
var searchVal = true;
var findTarget = 4;
var findAmount = 0;

for (var i=0; i<testArray.length; i++)
{
    if (testArray[i] == searchVal)
    {
        findAmount++;
    }
}

var findSuccess = (findAmount == findTarget);

testArray可以包含要测试的任何值。

searchVal是要测试的值。

findTarget是需要找到的次数。

findSuccess将根据条件是否已满足包含true或false。