思想:将给定的字符串转为数组,对数组去重,再将去重后的数组对原字符串进行遍历,遇到相同的元素就将字母后面的数字+1,最终返回一个数组(也可以转换成字符串)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
6.统计字符串中每个字符的个数。
(原始字符串是:“aabccdeefff”,结果是:a2 b1 c2 d1 e2 f3)
</body>
</html>
<script>
var str = "aabcccddfffgggggyyyyttttrreeww";
var arr = [];
var arr1 = [];
str = str.split(""); //将字符串转为数组
for (var i = 0; i < str.length; i++) { //对数组去重
if (str.indexOf(str[i]) === i) {
arr.push(str[i]); //arr[a,b,c,d,f]
}
}
//让新数组中保留的每一个元素在原字符串中去匹配,eg:a匹配到两个就是a2
for (var j = 0; j < arr.length; j++) { //arr[a,b,c,d,f]
var count = 0; //计数,arr1中每个字符在原字符串中的个数
for (var k = 0; k < str.length; k++) { //str = "aabcccddfffggggg"
if (arr[j] == str[k]) {
count++;
}
}
arr1.push(arr[j] + count + " "); //每次结果添加到数组中
}
// arr1 = arr1.join(""); //得出的结果转为字符串输出
console.log(arr1);
</script>
目前见到最简单的方法就是将字符串中的元素当做键值对中的key,后面的数字当做value放入json,昨晚回去用室友的电脑写出了这个方法,只能说for循环yyds。
?
?
|