Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组:如果数组连续n次包含值,则返回true_Javascript_Arrays - Fatal编程技术网

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

Javascript数组:如果数组连续n次包含值,则返回true,javascript,arrays,Javascript,Arrays,我想检查一个数组,如果它连续n次包含一个值 示例: 变量数组=[true,true,true,true,false];=>如果连续4次为真,则为真 变量数组=[true,false,false,true,true];=>false您需要一个计数器和一个量词,如。然后检查true上的值和增量,或将计数器重置为零 函数检查4(数组){ var计数=0; 返回数组.some(函数(a){ 返回一个?++count==4:count=0; }); } log(检查4([true,true,true,t

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

示例:
变量数组=[true,true,true,true,false];=>如果连续4次为真,则为真
变量数组=[true,false,false,true,true];=>false

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

函数检查4(数组){
var计数=0;
返回数组.some(函数(a){
返回一个?++count==4:count=0;
});
}
log(检查4([true,true,true,true,false]);//真的
log(检查4([true,true,true,false,true]);//假的

log(检查4([true,false,false,true,true]);//false
这可以通过reduce实现:

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

您可以这样做-此函数接受数组、检查次数和测试值

     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;
};
功能检查(arr、编号、val){
结果=假;
计数器=1;
对于(i=1;i=number){result=true;}
}
返回结果;
};
当然,还有更优雅的方式(你可以在发现错误的一刻破发),计数器的处理也可以更优雅

最短的一个:

var has4True=函数(arr){
return/(true){4}/.test(arr.join(“”));
};
log(has4True([false,true,true,true,true,false]);
log(has4True([true,false,false,true,true])
var testArray=[true,true,true,true,false];
var searchVal=true;
var findTarget=4;
var findAmount=0;

对于(var i=0;i向我们展示您尝试过的代码。因此,您需要做一些循环,不确定您想要实现什么,但您将需要其中的一些:Array.some、Array.filter、Array.reduce这方面的答案可能会让您找到正确的方向。任何值n次或特定值n次?他需要连续。您的代码返回t后悔:检查4([真,假,假,真,真,真])
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);