我想检查一个数组,如果它连续包含n次值。
例:
var array = [true,true,true,true,false]; ==>如果真的连续4次
,则为true var array = [true,false,false,true,true]; ==>假
答案 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。