要求:
先找出字符串 ‘8587263747153203552943982’ 中出现次数最多的数字及次数,然后去重后并排序(不准使用sort),使得到结果为 ‘0123456789’。
要求1:找到出现最多的数字和出现的次数
要求2:去除字符串中重复的数字
要求3:对去重后的字符串排序
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
// 找出出现最多的数字 字符串循环遍历
var str = '8587263747153203552943982';
// 定义一个对象用于存放 拆分后的 字符串
var obj = {};
// 循环遍历 字符串
for (var i = 0; i < str.length; i++) {
// 如果该字符是第一次出现就 将它保存并且 值加一
if (!obj[str.charAt(i)]) {
obj[str.charAt(i)] = 1
} else {
// 如果是再次出现就将它 的值再次加一
// 并且有去重效果
obj[str.charAt(i)]++
}
}
console.log(obj);
// 此时obj 的属性就是 已经去重的 并且它对应的值就是 该字符串出现的次数
// 假设 最多的次数的是 max 出现最多的是name 如果有多个相同的数值将他们 推入数组
var arr = [];
var arr1 = []; // 用于存储字符 对数字排序
var max = 0;
var name;
for (var key in obj) {
arr1.push(key);
if (obj[key] > max) {
max = obj[key];
name = key;
}
}
// 再次循环确定是否有 一样数量的字符
for (var key in obj) {
if (obj[key] == max) {
arr.push(key);
}
}
console.log(max); // 这是出现最多的次数
console.log(name); // 这是出现最多的其中一个
console.log(arr); // 这数组内出现的 就是出现最多的数字
console.log(arr1); // 这是去重后的 字符(数字)
// 用双层for循环 冒泡排序
// var newarr = [3, 9, 8, 65, 4]; // 测试 冒泡是否正确
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr1.length - i; j++) {
var maxx;
if (arr1[j] < arr1[j - 1]) {
maxx = arr1[j - 1];
arr1[j - 1] = arr1[j];
arr1[j] = maxx;
}
}
}
console.log(arr1); // 这是排序后的数组
</script>
</body>
</html>