如果我有两个数组,请说
[0, 0, 1, 1, 1, 0]
[0, 1, 0, 1, 0, 1]
我想检查数字1是否按顺序出现三次,以便第一个数组返回true,第二个数组返回false。
我不确定如何做到这一点(因为订单很重要)。
答案 0 :(得分:1)
您可以使用计数器查看1
的值是否是连续的。
function containsSequence(arr, val, max) {
var count = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] === val) {
counter++; // increment the counter by 1
}
else {
counter = 0; // reset counter
}
// our counter met our maximum
if (counter >= max) {
return true;
}
}
// if we get this far, there was no sequence
return false;
}
console.log(containsSequence([0,0,1,1,1,0], 1, 3)); // true
console.log(containsSequence([0,1,0,1,0,1], 1, 3)); // false
答案 1 :(得分:0)
i
function check(arr){
for(var i=0;i<arr.length;i++)
if(arr[i] && arr[i+1] && arr[i+2])
if(arr[i] == arr[i+1] == arr[i+2] == 1)
return true;
return false;
}
console.log(check([0, 0, 1, 1, 1, 0]));
console.log(check([0, 1, 0, 1, 0, 1]));
&#13;
答案 2 :(得分:0)
使用Array.prototype.some
的解决方案 - 跟踪计数和索引以测试连续数字的数组:
var test1 = [0, 0, 1, 1, 1, 0];
var test2 = [0, 1, 0, 1, 0, 1];
function test(arr, num, max) {
return arr.some(function(element, index) {
if(element == num) {
this.prevIndex = (this.prevIndex + 1) || index;
this.count = this.count || 0;
if(this.prevIndex == index)
this.count++;
else
this.count = 1;
if(this.count == max) return true;
}
}, Object.create(null));
}
console.log(test(test1, 1, 3));
console.log(test(test2, 1, 3));
&#13;
答案 3 :(得分:0)
您可以使用counter
检查所需的值val
是否按limit
次重复执行:
function checkLimit(arr, val, limit) {
var counter = 0;
for (var i = 0, l = arr.length; i < l; i++) {
counter = (arr[i] === val) ? ++counter : 0;
if (counter === limit) {
return true;
}
}
return false;
}
console.log(checkLimit([0, 0, 1, 1, 1, 0], 1, 3)); // true
console.log(checkLimit([0, 0, 1, 1, 0, 0], 1, 3)); // false
&#13;
答案 4 :(得分:-2)
检查此代码段
var arr1=[0,0,1,1,1,0]
var arr2=[0,1,0,1,0,1]
console.log(checkThreeOnes(arr1));
console.log(checkThreeOnes(arr2));
function checkThreeOnes(numbers){
var i=0;
var j=numbers.length;
var oneCount=1;
for(var i=0;i<j;){
if(numbers[i]==numbers[i+1]){
oneCount++;
if(oneCount==3)
return true;
}
else
oneCount=1;
i++;
}
return false;
}
希望这有帮助