- 数组求和
- 累加对象数组中的某项数据
- 累加对象数组中相同key值的某项数据
源数组:
const data = [1, 2, 3, 4, 5]
const objArray = [
{id: 1, number: 10},
{id: 2, number: 20},
{id: 3, number: 30},
{id: 4, number: 40},
{id: 5, number: 50}
]
const someObjArray = [
{id: 1, type: 1, name: 'zhangsan', value: 10},
{id: 1, type: 1, name: 'lisi', value: 10},
{id: 1, type: 1, name: 'wangwu', value: 10},
{id: 1, type: 1, name: 'zhangsan', value: 20},
{id: 1, type: 1, name: 'wangwu', value: 30},
{id: 1, type: 1, name: 'zhangsan', value: 30},
]
function sum (arr) {
const len = arr.length
let result = 0
for (let index = 0; index < len; index++) {
result += arr[index]
}
return result
}
const res = sum(data)
const reduceRes = data.reduce((acc, cur) => acc + cur, 0)
- 累加对象数组中的某项数据 (求所有的number和)
function sum (arr) {
const len = arr.length
let result = 0
for (let index = 0; index < len; index++) {
result += arr[index].number
}
return result
}
const res = sum(objArray)
const reduceRes = objArray.reduce((acc, cur) => acc + cur.number, 0)
- 累加对象数组中相同key值的某项数据 (求相同name的value和)
// 常见的数组求和方式
function sum (arr) {
const len = arr.length
let result = []
for (let index = 0
const {name, value} = arr[index]
const someIndex = result.findIndex(item => item.name === name)
someIndex === -1 && result.push({
name,
value
})
someIndex !== -1 && (result[someIndex].value += value)
}
return result
}
const res = sum(someObjArray)
// [{name: "zhangsan", value: 60}, {name: "lisi", value: 10}, {name: "wangwu", value: 40}]
// reduce 数组求和
const reduceRes = someObjArray.reduce((result, cur, index) => {
const { name, value } = cur
const someIndex = result.findIndex(item => { return item.name === cur.name})
someIndex === -1 && result.push({
name,
value
})
someIndex !== -1 && (result[someIndex].value += value)
return result
}, [])
// [{name: "zhangsan", value: 60}, {name: "lisi", value: 10}, {name: "wangwu", value: 40}]
Array.prototype.reduce
Array.prototype.findIndex