<script>
// arr.reduce(callback,[initialValue])
// callback // 回调函数
// initialValue 初始值
let namesArr = ['test1', 'test2', 'test1', 'test1', 'test3','test2'];
let nameNum = namesArr.reduce((total, cur , index, arr) => {
console.log(total) // total 上一次调用回调返回的 累计值
console.log(cur) // cur 当前被处理的元素
console.log(index) // 当前索引
console.log(arr) // 原始数组
if (cur in total) { // 检测对象中是否含有某key
total[cur]++
} else {
total[cur] = 1
}
return total
}, {})
console.log(nameNum); //{test1: 3, test2: 2, test3: 1}
// 利用 reduce() 进行数组去重
let sortArr = namesArr.reduce((totalPre,cur)=>{
if(!totalPre.includes(cur)){ // 检测数组中是否含有相同值
return totalPre.concat(cur);
}else{
return totalPre;
}
},[])
console.log(sortArr); // ["test1", "test2", "test3"]
</script>
方便预览逻辑 看下图
