for循环,倒序循环

首先:有一组数据,每个都和这个一样 asdfafd1kj3jh5kj43bb55jh2kjhkj5 随机的英文和数字组合。

现在需求需要获取每条数据的后两个数字并给它加上span标签。

一般来说,正序的for循环就可以了。从头开始循环,我刚开始也是这样想的。

但是有几个问题也就出来了

1. 必须要循环完整条数据的每一个值

2.还要先把循环到的每个数字都保存起来,然后再去获取后两位数字的位置

3.给后两位数字加上span标签后,再放回去,又是个麻烦事。

后面,如果如果我倒过来循环,一切不就都解决了吗?

果然,倒过来循环,效率立马提升4到5倍。

var randomNum = 一组英文和数字的随机数;
var flagNum = 0; // 定义循环结束条件
var actualNum = ''; // 替换后的字符串
var arr = [],arr2 = []; //定义两个空数组,arr: 要替换的位置(索引); arr2: 要替换的字符
// 逆序循环当前获得的块
for (var i = randomNum.length; i >= 0; i--) {
	if (!/[^0-9]/ig.test(num[i])) { // 只让数字进入
		arr.push(i+1); // 该数字在字符串中的位置
		arr2.push(randomNum[i]); //该数字
		flagNum++; //循环结束条件判断
	}
	if (flagNum >= 2) { // 循环的数字(只判断数字,字母不计数)大于或等于2时 结束循环
		break;
	}
}

actualNum = replacePos(randomNum, arr[0], "<i>"+arr2[0]+"</i>"); // 逆序获得的第一个数字添加i标签(文字高亮)
actualNum = replacePos(randomNum, arr[1], "<i>"+arr2[1]+"</i>"); // 逆序获得的第二个数字添加i标签(文字高亮)

// 将actualNum(已经添加完标签的数)放回原数据中。

下面这段是替换代码

//替换指定的字符串
function replacePos(strObj, pos, replacetext) {
	var str = strObj.substr(0, pos-1) + replacetext + strObj.substring(pos, strObj.length);
	return str;
}

一些有趣的代码总能在无形中丰富自己。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值