# baseSum
# Description
baseSum 用来计算一组数据的和,这是用来实现 sum 和 sumBy 的内部方法,需要传入迭代器 iteratee 来返回值用来计算。
# Params
(array, iteratee)
# Return
number
# Code
function baseSum(array, iteratee) {
let result
for (const value of array) {
const current = iteratee(value)
if (current !== undefined) {
result = result === undefined ? current : (result + current)
}
}
return result
}
# Analyze
for...of
遍历array
- 通过
iteratee
处理数组每一项,拿到返回值 - 如果返回值不是
undefined
,则对result
进行赋值 result
为undefined
时,表示之前没有成功赋值,是第一次赋值,将current
的值赋值给result
result
不是undefined
,则累加current
即可
# Remark
for...of MDN (opens new window) 语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句
在 result 判断 undefined 赋值这里,单从赋值而言,可以使用
result ??= current
在 result 为null 或者 undefined 时,对其进行赋值
# Example
console.log(baseSum([1,2,3,4,5,6,7], v => v)) // 28