1

私の価値観は自然に次の形になります。

[1,2,3,4,5,6,7,8,9]

次のような入力パラメーターを必要とするサーバー API に対して開発しています。

[1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9]

単純な for ループよりも高速またはより js スタイルの方法はありますか?

var f = function(values) {
    var newList = [];
    var i;
    for (i = 0; i < values.length; i++) {
         newList.push(values[i]);
         newList.push(values[i]);
    }
    return newList;
}
4

4 に答える 4

1

試す:[].concat.call([1,2,3,4,5,6,7,8,9],[1,2,3,4,5,6,7,8,9]).sort();

またはより一般的な:

(function(){
   return this.concat(this).sort(function(a,b){return a-b;});}
).call([1,2,10,20,30,40,50,60,70,80,9]);

または単なる関数:

function(v) {
    var i = v.length, nw = [];
    while (i--) { nw.push(v[i],v[i]); }
    return nw.reverse();
}

または使用してmap

var nw = ([1,2,3,4,5].map(function(a){this.push(a,a)},nw=[]),nw);

関数が最も効率的だと思います。

于 2013-10-17T05:53:50.590 に答える
1

機能を使用できeachます。

これにより、ステップが減少します。

var list=[1,2,3,4,5,6,7,8,9]
var newlist=[];
$.each(list,function(index,data){newlist.push(data);newlist.push(data)})

お役に立てれば。

于 2013-10-17T05:40:03.317 に答える