如何精简JavaScript函数?合并map、reduce与条件判断方法
精简JavaScript函数并整合map、reduce与条件判断
最终精简实现
直接用reduce一步完成过滤与求和,无需额外的map操作和辅助函数:
const items = [ { prise: 40 }, { prise: -120 }, { prise: "505" }, { prise: 350 }, ]; const total = items.reduce((acc, item) => { const prise = item.prise; // 把条件判断直接嵌入累加逻辑 return acc + (typeof prise === "number" && prise > 0 ? prise : 0); }, 0); // 给reduce设置初始值0,避免空数组时返回undefined
更紧凑的写法(对象解构)
如果想进一步缩短代码,可以用对象解构直接提取prise属性:
const total = items.reduce((acc, { prise }) => acc + (typeof prise === "number" && prise > 0 ? prise : 0), 0);
精简逻辑说明
- 合并遍历步骤:原代码先通过
map生成中间数组,再用reduce求和,需要两次遍历。精简后只用一次reduce遍历,既完成条件判断又完成累加,性能更优。 - 内嵌条件判断:把原
isType函数的校验逻辑直接写到reduce回调里,用三元运算符替代if-else,让逻辑更紧凑。 - 设置初始值:给
reduce指定初始值0,避免当items为空数组时,reduce返回undefined的问题。
内容的提问来源于stack exchange,提问作者Taras Goworuhca
相关产品推荐
相关产品推荐

