我正在试图找出编写一段利用函数语法的代码的最佳方法。
示例1: 看起来不错,但先验效率低,除非浏览器可以执行某种避免数组的优化不需要多次声明。
var isExcluded = function(e){
var unwanted = ["orange", "tomato", "apple"]
return unwanted.indexOf(e) === -1;
}
["orange", "melon", "apple"].filter(isExcluded).
示例2 效率更高,但看起来不那么整洁因为isExcluded应包含与元素相关的所有逻辑排除在外,而在这里它分布在两条线上。
var unwanted = ["orange", "tomato", "apple"];
var isExcluded = function(e){
return unwanted.indexOf(e) === -1;
}
["orange", "melon", "apple"].filter(isExcluded)
示例3 可能效率更高,看起来有点整洁,但我会说更难阅读。
var isExcluded = (function(){
var unwanted = ["orange", "tomato", "apple"];
return function(e){
return unwanted.indexOf(e) === -1;
}
})();
["orange", "melon", "apple"].filter(isExcluded)
我希望对这三种方法有一些意见,从而带来最佳的可读性/效率比。
编辑: 请忘记浏览器支持评论,这不是问题的重点。
答案 0 :(得分:0)
将Array.prototype.filter()
与Array.prototype.indexOf()
结合使用,并且所有当前浏览器都应支持["orange", "melone", "apple"].filter(function(e) {
return ["orange", "tomato", "apple"].indexOf(e) != -1;
});
:
{{1}}