方法一:
var str = "dede5rtfdfsdaawwdededfafsvsddw";
function countChar(){
//将字符串转换成数组
let strArr = str.split('');
//获取去重后的字母,构建数组对象
let arr = [...new Set(strArr)].map(item=>{return{[item]: 0}});
arr.forEach(item=>{
strArr.forEach(item2=>{
if(Object.keys(item)[0]=== item2){
item[item2]++;
}
})
})
console.log(arr);
}
countChar();
方法二:
var str = 'fdssddsdssdeedff';
var res = arr.split('').reduce((result, curValue) => (result[curValue]++ || (result[curValue] = 1), result), {});
console.log(res);
reduce(function,initialVal):function:用于执行每个数组元素的函数;initialVal:结果初始值。
function有四个参数:function(total, curValue, curIndex, arr)
result[curValue]++ || (result[curValue] = 1), result 这个表达式表示 result中没有curValue字母的属性,就执行(result[curValue] = 1),给result添加一个curValue字母的属性,并赋值1;如果有该字母的属性,就执行result[curValue]++,将该字母属性的值+1。
js中逗号运算符永远返回逗号后面的值,也就是返回result