我在代码中使用了以下内容。我可以做一个班轮吗?
function anotherFunction(array)
{
new_array = [];
for (var i = 0; i < array.length; i++)
{
new_array.push(someFunction(array[i]));
}
return new_array;
}
答案 0 :(得分:6)
你想要的是“map”一个函数上的数组:
var arr = [...];
var arr2 = arr.map(someFunction);
答案 1 :(得分:1)
var newArray = array.map(someFunction);
您应该注意,如果您需要支持
,IE8可能会失败http://kangax.github.io/es5-compat-table/#Array.prototype.map
答案 2 :(得分:0)
如果你也想要它快...... 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
每个变量都在测试之外定义...因此速度仅基于自定义函数。
这适用于所有浏览器。