【发布时间】:2013-01-16 16:05:42
【问题描述】:
你会做这种事吗?
var getBoard1 = function(id) {
return $.grep(me.boards, function (board) {
return board.Id == id;
});
};
还是这样的?
var getBoard2 = function(id) {
for (var i = 0; i < me.boards.length; i++) {
var board = me.boards[i];
if (board.Id == id)
return board;
}
return null;
};
为什么,在正确性、可读性和性能方面,您更喜欢这种方式?如果您愿意以第三种方式进行,请分享。
【问题讨论】:
-
在这里测量:jsperf.com
-
我做了一个对比:jsperf.com/grep-vs-pure-js
-
哇,dfsq! getBoard2 比 getBoard1 快 5.4 倍。把我的袜子踢掉了。谢谢! :)
-
请注意,它们与第一个返回数组和第二个返回对象并不完全相同
-
@DavidFregoli 是的。我终于也注意到了。所以我们必须检查 grep 的长度,把 getBoard1 弄混了一点。
标签: javascript jquery performance