我正在尝试优化一些淘汰js代码,我想知道哪个更快,即使用索引器访问变量如下:
for (var i = 0; i < data.length; i++) {
data[i].MediaID = ko.observable(data[i].MediaID);
data[i].MediaName= ko.observable(data[i].MediaName);
data[i].MediaTypeID= ko.observable(data[i].MediaTypeID);
}
或声明临时变量。
for (var i = 0; i < data.length; i++) {
var temp = data[i];
temp.MediaID = ko.observable(temp.MediaID);
temp.MediaName= ko.observable(temp.MediaName);
temp.MediaTypeID= ko.observable(temp.MediaTypeID);
}
答案 0 :(得分:3)
使用temp-variable应该稍快一些,因为你不需要在数组中查找元素。
然而,增益将是最小的
答案 1 :(得分:0)
比较
data.a.b.c.d.e.f.g.MediaID = ko.observable(data.a.b.c.d.e.f.g.MediaID);
data.a.b.c.d.e.f.g.MediaName= ko.observable(data.a.b.c.d.e.f.g.MediaName);
data.a.b.c.d.e.f.g.MediaTypeID= ko.observable(data.a.b.c.d.e.f.g.MediaTypeID);
和
var temp =data.a.b.c.d.e.f.g;
temp.MediaID = ko.observable(temp.MediaID);
temp.MediaName= ko.observable(temp.MediaName);
temp.MediaTypeID= ko.observable(temp.MediaTypeID);
你不需要多次查找同样的东西
答案 2 :(得分:0)
如果你想要它更快,你也应该缓存data.length
for(var i = 0, len = data.length; i < len; i++)...
答案 3 :(得分:0)
如果您担心性能,请不要在循环中使用array.length。这不是一个值,是一个内部函数,每次访问时重新计算数组的总项,更好的是:
var total = items.length;
for(i=0; i < total; i++){
//stuff
}
现在针对您的特定用例,我不知道您正在使用的framweworks,但如果您使用的是jQuery和/或下划线,而不是循环,则可以使用其中一个map函数: http://api.jquery.com/jQuery.map/ http://underscorejs.org/#map