方法1:核心:使用charAt()方法找是否存在str里面的值
34行把字符串转化为数组,使用sort方法排序 然后输出字符串(这里是解决一个bug,下面有解释)
创建一个空对象
遍历str字符串
如果空对象里面没有str里面的值就在空对象里面创建一个新的属性值赋值为1
如果空对象里面有str里面的值就给这个值属性加1
得到一个对象{
属性:属性值(个数)
}这种形式
得到这个对象之后根据需求遍历一下,拿属性值来比较大小
定义max =“”和 sum=0来装结果
如果sum小于遍历出来的属性值就把这个属性值赋值给sum得到这个对象里面的最大值
并且把k(属性名)赋值给max 表示最大值的那个字符
最后输出结果,用字符串拼接
console.log("最大值是" + max, "个数为" + sum);
方法2:(简单一些)把charAt()方法省略为通过下标找元素,如果没有为false有为true
var str = "abbcccddddd"
function fun(str) {
var obj = {}
for (var i = 0; i < str.length; i++) {
if (obj[str[i]]) {
obj[str[i]]++
} else {
obj[str[i]] = 1
}
}
console.log(obj);
var max = "",
sum = 0
for (var k in obj) {
if (sum < obj[k]) {
max = k
sum = obj[k]
}
}
console.log("最大值为:" + max + ",个数为:" + sum);
}
fun(str)
查找指定字符进行修改
var str="abcdefgabcdefg"
str.replace("a","b") 这个方法只能找到第一个a进行修改
如果你想修改里面全部的"a"
方法1:str.replaceAll("a","b") 会找到全部的a修改为b(网上找了好久没有找到这个方法就发了)
方法2:遍历字符串找到指定的字符进行修改 把所有a改成b
var str="abcdefgabcdefg"
str=str.split("")//使用for in要转为数组 可以不转使用for遍历字符串
for (var k in str) {
if (str[k] == "a") {
str[k] = "b"
}
}
str=str.join(")
console.log(str);//输出是数组使用join变成字符串
数组去重加排序
var arr = [1, 2, 4, 3, 2, 3, 5, 2, 7, 5, 7, 5, 9, 7, 6, 8, 3]
var arr2 = Array.from(new Set(arr)).sort()
console.log(arr2);
顺序排序(从上到下或者从下到上)
if (show) {
// console.log("升序");
state.list.sort((a, b) => {
return a.id - b.id;
});
} else {
// console.log("降序");
state.list.sort((a, b) => {
return b.id - a.id;
});
}
随机排序 (打乱排列顺序)
porkArr.sort((x, y) => {
return Math.random() - 0.5;
});