0

私は自分のコードで次のことをよく使用しています。ワンライナーでできますか?

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

3 に答える 3

1
var newArray = array.map(someFunction);

ただし、これをサポートする必要がある場合、これは IE8 で失敗する可能性があることに注意してください。

http://kangax.github.io/es5-compat-table/#Array.prototype.map

于 2013-08-06T14:04:03.760 に答える
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

すべての変数はテストの外で定義されているため、速度はカスタム関数のみに基づいています。

これはすべてのブラウザで機能します。

于 2013-08-06T14:15:54.503 に答える