reduce计算数组中每个元素出现的次数 数组去重的几种方式 将多维数组转化为一维

      // js计算数组中每个元素出现的次数
        var names = ['Alice','Bob','Tiff','Bruce','Alice'];

        var countedNames = names.reduce(function (allNames,name) {
        if (name in allNames) {
            allNames[name]++;
        }
        else {
        allNames[name] = 1;
        return allNames;
        },{});
        console.log(countedNames) //{Alice: 2,Bob: 1,Tiff: 1,Bruce: 1}


     数组去重  Set 和 reduce 和 for循环
         //    var arr=[1,2,23,4,5,5];
        //    var newarr=new Set(arr); //去重
        //    console.log([...newarr]);//将伪数组转化为真实的数组 //(5) [1, 2, 23, 4, 5]

     let arr = [1,3,1]
     let newArr = arr.reduce((pre,cur)=>{
     if(!pre.includes(cur)){
     return pre.concat(cur)
     }else{
     return pre
     }
     },[])
     console.log(newArr);// [1,4]


    将多维数组转化为一维
    let arr = [[0,1],[2,3],[4,[5,6,7]]]
    const newArr = function(arr){
    return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[])
    }
    console.log(newArr(arr)); [0,1,7]



 

       array.reduce(function (total,currentValue,currentIndex,arr),initialValue)

         参数                          描述
         total                        必需。初始值,或者计算结束后的返回值。
         currentValue                 必需。当前元素被循环的元素
         currentIndex                 可选。当前元素被循环的元素的索引
         arr                          可选。当前元素所属的数组对象。
       

       var arr = [1,4];
       var sum = arr.reduce((prev,cur,index,arr) {
       console.log(prev,index);
       return prev + cur;
       })
       console.log(arr,sum);
         打印结果:
         1 2 1
         3 3 2
         6 4 3
         [1,4] 10

         分析:第一次的prev 是初始值为1 ,以后的prev为返回值
         cur 当前元素被循环的元素,是下标为1的那个元素
         index当前元素被循环的元素的索引

 

相关文章

1==>简述一下src与href的区别 src用于替换当前元素;...
什么是window对象?什么是document对象? window对象代表浏览...
1 》vue-router有哪几种导航钩子? 第一种:是全局导航钩子:...
1=>为什么data是一个函数 【理解】 组件的data写成一...
01 vue3的新特征 1.组合式API. setUp作为组合函数的入口函数...