我在我的代碼中使用了很多。我可以作爲一個班輪嗎?基於另一個陣列的功能建立陣列
function anotherFunction(array)
{
new_array = [];
for (var i = 0; i < array.length; i++)
{
new_array.push(someFunction(array[i]));
}
return new_array;
}
我在我的代碼中使用了很多。我可以作爲一個班輪嗎?基於另一個陣列的功能建立陣列
function anotherFunction(array)
{
new_array = [];
for (var i = 0; i < array.length; i++)
{
new_array.push(someFunction(array[i]));
}
return new_array;
}
var newArray = array.map(someFunction);
你應該注意的是,如果你需要支持,這可能失敗的IE8,儘管
http://kangax.github.io/es5-compat-table/#Array.prototype.map
如果你還想快點... Array.prototype.map並不像循環那麼快。
http://jsperf.com/array-map-vs-loop/2
這樣:
function customMap(a,c){
var b=[],l=a.length;
while(l--){
b[l]=c(a[l]);
}
return b;
}
與
var newArray=customMap(oldArray,function);
這是非常快回吧。
您還可以創建自定義原型。
Object.defineProperty(Array.prototype,'CMap',{value:function(c){
var b=[],l=this.length;while(l--){b[l]=c(this[l])}
return b;
},writable:false,enumerable:false});
並使用它像地圖。
var newArray=oldArray.CMap(function);
編輯
這裏是jsperf測試...
http://jsperf.com/custom-vs-map
每個變量的測試之外定義...只能對自定義的速度是根據功能。
這適用於所有瀏覽器。
是的,刪除換行符;)*只是在開玩笑*。 –
array.push應該是new_array.push和返回數組應該是返回new_array,我認爲 –