美文网首页
数组对象去重之reduce

数组对象去重之reduce

作者: 键盘上敲音符 | 来源:发表于2022-07-18 17:26 被阅读0次

    需求: 有一个对象数组需要根据里面的几项进行去重和其他操作;

        /* 原数组 */
        let oldArr = [
          {
            id:'1',
            key:'1',
            num:1
          },
          {
            id:'1',
            key:'1',
            num:1
          },
          {
            id:'2',
            key:'1',
            num:1
          },
        ]
        /* 处理后的数组 */
        let newArr = [
          {
            id:'1',
            key:'1',
            num:2
          },
          {
            id:'2',
            key:'1',
            num:1
          },
        ]
    

    方法:用reduce 在其每一次循环的时候,匹配累计的数组,看是否相同

    const removedup = (arr) => {
          if (!Array.isArray(arr)) {
            return arr;
          }
          if (arr.length == 0) {
            return [];
          }
          return arr.reduce((items, item) => { // 将相同属性相加并合并去重  (item.xx==arrItem.xx&&....)
            let findData = items.find(arrItem => item.id == arrItem.id && item.key == arrItem.key)
            // 查到和累计后的数组相同的做处理
            if (findData) {
              findData.num = findData.num + item.num
            } else {
              //不要直接在原来的对象修改,新建对象
              let newItem = JSON.parse(JSON.stringify(item))
              items.push(newItem)
            }
            return items
    
          }, [])
        }
    

    相关文章

      网友评论

          本文标题:数组对象去重之reduce

          本文链接:https://www.haomeiwen.com/subject/pcksirtx.html