reduce用法

 //reduce对数组套对象去重
    let arr = [
        { id: 0, name: "张三" },
        { id: 1, name: "李四" },
        { id: 2, name: "王五" },
        { id: 3, name: "赵六" },
        { id: 1, name: "孙七" },
        { id: 2, name: "周八" },
        { id: 2, name: "吴九" },
        { id: 3, name: "郑十" },
      ];


      function fun(arr){
        let obj = {}
       arr =  arr.reduce((newArr,next)=>{
          obj[next.id]?'':obj[next.id] = true&&newArr.push(obj)
          return newArr
        },[])
        return arr
      }
        console.log(fun(arr));
//reduce对数组求和

const prices = [5.99, 2.99, 3.99, 11.59]
function sum(prices){
  const sumNum = prices.reduce((preVal,nextVal)=>{
          return preVal +nextVal
  },0)
  return sumNum
}
console.log(sum(prices))


//reduce将二维数组转成一维数组  也可以支持多维转一维

var rows = [[2, 3, 5], [1, 2, 4], [8, 5, 5]]
function twotoone(rows){
  const newA = rows.reduce((pre,next)=>{
    return pre.concat(next)
  })
  return newA
}
console.log(twotoone(rows))

//数组转对象 元素和出现的次数

const apples = ['green', 'red', 'red', 'yellow', 'red', 'yellow', 'green', 'green'];
        function arrtoobj(apples){
          const lastRes = apples.reduce((pre,next)=>{
            pre[next]>=1? pre[next]++ :pre[next] = 1
            return pre
          },{})
          return lastRes
        }
        console.log(arrtoobj(apples))
//手写深拷贝
const deepCopy = (obj)=>{
  const newObj = obj.constructor === Array?[]:{};
  for(let key in obj){  
    if(obj.hasOwnProperty(key)){
        if(obj[key]&&typeof obj[key] === 'object'){
          newObj[key] = deepCopy(obj[key])
        }
        else{
          newObj[key] = obj[key]
        }
    }
  }
  return newObj
}
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腿给你干断

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值