aaabbccccdeeeeeffffg压缩成3a2b4c1d5e4f1g
两种方法,一种多但简单,一种少但复杂
var str3 = "aaabbccccdeeeeeffffg";
str3 = str3.split("");
var code;
var count = 0;
var j = 0;
for (i = 0; i <= str3.length; i++) {
code = str3[j];
if (str3[i] == code) {
count++;
} else {
str3.splice(j, count);
count = count + "";
str3.splice(j, 0, count, code);
j += 2;
document.write(str3 + "<br>");
i = j - 1;
count = 0;
}
}
console.log(str3);
// 方法2
var str3 = "aaabbccccdeeeeeffffg";
var arr3 = str3.split("");
var result3 = arr3.reduce(function (o, current) {
// o是传入的对象{}
// o[]表示访问对象的属性
// o[a]?判断对象的这个属性存不存在
// 存在,就属性值+1,不存在,就令属性值为1
// 一开始current是"a",o["a"]不存在,所以o["a"]=1,后面存在了,+1,以此类推
o[current] ? o[current]++ : (o[current] = 1);
return o;
}, {})
console.log(result3);
var res = "";
for (var key in result3) {
res += result3[key] + key;
// 拼接字符串,result3返回值是对象,result[key]表示访问对象的属性,得到属性值,key是属性
}
console.log(res);
注释见代码段