实现 1.计算找到出现最多的数字和次数 2. 实现数组去重 3. 进行排序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 16、先找出字符串 '8587263747153203552943982' 中出现次数最多的数字及次数,然后去重后并排序(不准使用sort),使得到结果为 '0123456789'。
// 要求1:找到出现最多的数字和出现的次数
var ar = '858726374715320355294398211112';
let arr = ar.match(/./g); // 将字符串转换为数组
// let arr = ar.split(''); // 这个也可以实现转换为数组
function getCount(arr) {
let obj = { };
for (var i = 0; i < arr.length; i++) {
var key = arr[i];
if (obj[key] !== undefined) { //统计obj 中 数组里面各项出现的次数
obj[key]++; // 如果 键 已经在 obj 中出现了就加 1
} else {
obj[key] = 1; //如果 键 没有在 obj 中出现 就 标记为 1
}
} // 此时 obj 中已经有了数组里面的所有元素, 以及出现的次数
let maxCout = 0; // 假设出现的最多的次数为0
let eq = []; // 设置一个空数组, 接收出现 最多次数一致的 元素
let maxElement = arr[0]; // 假设 出现最大次数的元素, 是 数组的第一项
for (var key in obj) {
if (maxCout < obj[key]) { // 当 假设最多的次数 小于 obj 中统计出现的最多次数时
maxCout = obj[key]; // 把 obj 中出现的 最多次数 赋值给 maxCont
maxElement = key; // 把出现最多次数的元素 赋值给 maxElement
eq.length = 0; // 确保 eq 数组为空
} else if (maxCout === obj[key]) {
eq.push(key); // 将 出现相同 最多次数的元素 存储在 eq 数组中
}
}
if (eq.length > 0) {
for (var j = 0; j < eq.length; j++) {
maxElement += ',' + eq[j]; // 把所有的 出现最多次数的元素赋值给 maxElement
}
}
return '出现次数最多的元素是: ' + maxElement + ' 出现最多的次数: ' + maxCout;
};
let yi = getCount(arr);
console.log(yi); // 出现次数最多的元素是: 1,2 出现最多的次数: 5
// 要求2:去除字符串中重复的数字
let array = [...new Set(arr)];
console.log(array);
// 要求3:对去重后的字符串排序
let san = array.sort(); // ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
let san1 =san.join('');
console.log(san1); //0123456789
</script>
</body>
</html>