私は自分のコードで次のことをよく使用しています。ワンライナーでできますか?
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
すべての変数はテストの外で定義されているため、速度はカスタム関数のみに基づいています。
これはすべてのブラウザで機能します。