根据另一个数组的功能构建数组

时间:2013-08-06 14:01:28

标签: javascript

我在代码中使用了以下内容。我可以做一个班轮吗?

function anotherFunction(array)
{
    new_array = [];
    for (var i = 0; i < array.length; i++) 
    {
        new_array.push(someFunction(array[i]));
    }  
    return new_array;
}

3 个答案:

答案 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

每个变量都在测试之外定义...因此速度仅基于自定义函数。

这适用于所有浏览器。