【发布时间】:2016-02-15 07:40:15
【问题描述】:
对于一个接受数字数组并在包含至少一个偶数时返回 true(否则为 false)的函数,我有以下 2 个解决方案。
解决方案 1(通过 forEach):
var hasEven = function (collection) {
var isEven = false;
collection.forEach(function (entry) {
if (entry % 2 === 0) {
isEven = true;
return;
}
});
return isEven;
}
解决方案 2(通过 reduce):
var hasEven = function (collection) {
return collection.reduce(function (result, entry) {
return (entry % 2 === 0) ? true : result;
}, false);
}
第一个解决方案允许我在找到偶数后立即返回 true。另一方面,第二种解决方案提供了最短的代码。哪个更好?
ps - 是的,有更好的解决方案...比如使用 array.some(...)。但我对比较这里提供的解决方案特别感兴趣。是的,现在解决方案正在正常工作。 :)
【问题讨论】:
-
我认为您没有测试过该代码。
-
感谢您指出这一点。如您所知...我是这个游戏的新手,正在学习中。
-
在要求人们查看问题之前进行测试并通常在问题上投入一些思考与新手无关。
-
感谢您的评论 Denys,但也没有人天生就具备完整的测试知识。仅供参考,我确实测试了我的“解决方案”..我只是没有正确地做到这一点。希望我会继续向像你这样的人学习并改进......所以是的,我是一个使用 javascript 开发的新手,这显然也会影响我的测试水平。
-
我终于弄明白了,测试一下,找时间更新一下上面的问题。
标签: javascript arrays