js数组求和

一、eval

尽量别用eval求和

function sum(arr) {
  return eval(arr.join("+"))
}

二、循环

for, forEach, reduce均可

function mySum(arr) {
	return arr.reduce((prev, curr) => {
		return prev + curr
	}, 0)
}

三、入参检查

实际使用需要检查输入数值是否规范:
首先,入参必须是非空数组;其次,数组元素必须是数字

如果入参不规范,则手动抛出异常。使用求和函数时,捕捉并处理该异常,避免其中断程序的执行

function mySum(arr) {
	if(!arr || !(arr instanceof Array)) return
	return arr.reduce((prev, curr) => {
		if(!parseFloat(curr)) {
            throw new Error('Can\'t sum with value: ' + curr)
        }
		return prev + parseFloat(curr)
	}, 0)
}

// TEST

let arr = [1,2,'a']
try {
	mySum(arr)
} catch (err) {
	console.log(err.message || err)
}
// Can't sum with value: a

let arr1 = [
	{ no: 'NO1', value: 10 },
	{ no: 'NO2', value: '100' },
	{ no: 'NO3', value: '1' }
]
try {
	mySum(arr1.map(p => p.value))
} catch (err) {
	console.log(err.message || err)
}
// 111
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值