微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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当前元素被循环的元素的索引

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐