数组对象按照相同值合并,并且求和
// 从这样:
let timeList=[
{time: '1996-07-11', content: 1},
{time: '1996-07-11', content: 1},
{time: '1996-08-09', content: 1},
{time: '1996-07-11', content: 2}
]
// 变成这样
[
{time: '1996-07-11', content: 4},
{time: '1996-08-09', content: 2}
]
实现: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)