我想创建一个函数,当给定一个数字数组和一个条件(例如奇数或偶数)时,匹配该条件的数字被加在一起 . 如果没有值与条件匹配,则应返回0 .
如果没有Array.prototype.filter(),我怎么能这样做 - 我的教科书告诉我没有这种方法就可以做到这一点 .
如果我应该使用什么陈述?
console.log(conditionalSum([1, 2, 3, 4, 5], "even")); => 6
console.log(conditionalSum([1, 2, 3, 4, 5], "odd")); => 9
console.log(conditionalSum([13, 88, 12, 44, 99], "even")); => 144
console.log(conditionalSum([], "odd")); => 0
谢谢 .
6 回答
您可以通过选择正确的回调来减少数组 .
看一下这个
简单而整洁的解决方案
希望,这会有所帮助 .
我建议将条件函数作为参数传递 .
这样,您可以为许多不同的操作重用相同的功能 .
实际上有几种方法可以解决这个问题 .
第一个是使用
filter
获取预期数字列表,然后将它们与reduce
相加 . 这是为了获得最佳可读性 .同时使用
for
循环有助于提供更高性能的解决方案 .因此,选择正确的解决方案取决于您的使用案例 . 我认为大多数时候你应该选择可读性 .