var testStr = ["HHHDDFFFFFFF", "HHHDFFFFFFF", "FFHHHDFFFFFFF", "FFDFFFFFFF"];
function codeStr(str) {
var mapObj = []
var reg = /(H|D|F)(\1*)/g;
var curMatch;
while(curMatch = reg.exec(str)) {
var tempObj = {};
tempObj.key = curMatch[1];
tempObj.val = curMatch[0].length;
mapObj.push(tempObj);
}
return mapObj;
}
function codeStr2(str) {
var mapObj = []
var reg = /(H|D|F)(\1*)/g;
str.replace(reg, function() {
//arguments和exec执行结果相同,猜猜replace方法由exec方法衍生出来,未验证
curMatch = arguments;
var tempObj = {};
tempObj.key = curMatch[1];
tempObj.val = curMatch[0].length;
mapObj.push(tempObj);
})
return mapObj;
}
for(var i=0;i<testStr.length;i++) {
console.log(codeStr2(testStr[i]));
}