常用对象操作整理[更新中]

93 阅读1分钟

数组对象按照相同值合并,并且求和

// 从这样:
let timeList=[
 {time'1996-07-11'content1},
 {time'1996-07-11'content1},
 {time'1996-08-09'content1},
 {time'1996-07-11'content2}
]
// 变成这样
 [
 {time'1996-07-11'content4},
 {time'1996-08-09'content2}
]

实现:reduce

 tempList = tempList.reduce((obj, item) => {
            let find = obj.find(i => i.time === item.time)
            find ? find.content += parseInt(item.content) : obj.push({ ...item })
            return obj
        }, [])

数组去重

let arr=[a,b,b,b,a,s,c,d]
let newArr=[...new Set(arr)]
// a,b,s,c,d

将对象变成数组对象

注:对象之间一一映射

要求:从 let m={ "count_Order": [ "19", "1", "1", "43", "1", "2", "122" ], "discount": [ "0.25", "0.04", "0.01", "0.2", "0.01", "0.04", "0.01" ], "reorderLevel": [ "20", "15", "15", "0", "20", "15", "15" ] }

变成

let mm=[ { "dim": "0.25", "dim2": "20", "sum": 19 }, { "dim": "0.04", "dim2": "15", "sum": 3 }, { "dim": "0.01", "dim2": "15", "sum": 123 }, { "dim": "0.2", "dim2": "0", "sum": 43 }, { "dim": "0.01", "dim2": "20", "sum": 1 }, { "dim": "0.04", "dim2": "15", "sum": 3 }, { "dim": "0.01", "dim2": "15", "sum": 123 } ]


let mm = []

// 根据两个键去除重复,并且将第三个键求和

m['discount'].forEach((element, index) => {
  let sum = 0
  m['discount'].forEach((el, ind) => {
    if (element === el) {
      if (m['reorderLevel'][index] === m['reorderLevel'][ind]) {
        sum += Number(m['count_Order'][ind])
      }
    }
  });
  mm.push({
    dim: element,
    dim2: m['reorderLevel'][index],
    sum: sum
  })
});

数组对象去重复将上面的mm去重

目标:mm=[ { "dim": "0.25", "dim2": "20", "sum": 19 }, { "dim": "0.04", "dim2": "15", "sum": 3 }, { "dim": "0.01", "dim2": "15", "sum": 123 }, { "dim": "0.2", "dim2": "0", "sum": 43 }, { "dim": "0.01", "dim2": "20", "sum": 1 } ]

mm.forEach((item) => {
  let sum = 0
  mm.forEach((value) => {
    if (item.dim === value.dim && item.dim2 === value.dim2) {
      sum++
      if(sum>1){
        mm.pop()
      }
    }
  })
})

console.log(mm)