假如有 1,2,3,3,3,3,0,1,2,5,5,5,5 这串数字不一定就只代表一串数字,你可以理解为下标一样的东西
是这样的
我要取出该串中 连续相同且大于3个的 数字(下标)
有人说用for循环,然后再循环外面定义一个变量(如num=0)做记录 循环对比下一个,相同则num++,当>=3则 打印数字。
这样的话 能得到连续相同的3 但是后面的5就得不到了,所以我 循环对比下一个不相同的时候则 num=0重置 这样想一下是能跑起来的
最后的问题是 这样的for循环 假如如上遇到4个3 那么我也只能打印3个3,需求是 连续存在相同的数字个数>=3都会返回 求大牛指点
是这样的
我要取出该串中 连续相同且大于3个的 数字(下标)
有人说用for循环,然后再循环外面定义一个变量(如num=0)做记录 循环对比下一个,相同则num++,当>=3则 打印数字。
这样的话 能得到连续相同的3 但是后面的5就得不到了,所以我 循环对比下一个不相同的时候则 num=0重置 这样想一下是能跑起来的
最后的问题是 这样的for循环 假如如上遇到4个3 那么我也只能打印3个3,需求是 连续存在相同的数字个数>=3都会返回 求大牛指点
改为
当遇到3个相同数字之后再遇到1个不同数字的时候输出
判断num的个数输出相同的数字之后再重置num
{
打印数字
}
var s = [1,2,3,3,3,3,0,1,2,5,5,5,5];
var v = (" "+s.join(" ")+" ").match(/( \d+ )\1{2,}/g);
alert(v);
var len = s.length;
var tmp='',
num=0,
mask = {};
for(var i=0;i<len;i++){
var now = s[i];
if(tmp === now){
num++;
tmp=now;
if(i==(len-1)){
if(num>1){
mask[tmp] = num +1 ;
num = 0;
tmp = now;
}
}
}else if(num > 1) {
mask[tmp] = num + 1 ;
num = 0;
tmp = now;
}else {
tmp = now;
}
}
var $a = mask;