読者です 読者をやめる 読者になる 読者になる

JavaScriptでArray.fill

Array.fill

配列の初期値を指定する方法の処理速度検証 (Kanasansoft Web Lab.)について。
Arrayをnullで初期化したい以外ではこれで要件を満たせるのかな…。速度はベンチマークをとっていないので分からない。evalは生理的に嫌いなのでnew Funciton(Functionでもいいけど)。eval()でもこと足りると思いますが…。

Array.fill = function(n, s)
{
    s = Array(n + 1).join('"*",').replace(/\*/g, s.split('"').join('\\"'));
    return (new Function('return ['+ s.slice(0, s.length-1) +'];'))();
};

全置換

正規表現を使わない全置換。正規表現を利用する場合とどちらがはやいんでしょう?ベンチマークとってないのでこれも速度不明。

String.prototype.replaceAll = function(r, s){
    return this.split(r).join(s);
};

12月8日(土)のKanasan.jsに僕も参加したいと思います。宜しくおねがいいたしますm(__)m。寝坊しない。仕事の割り込みがないことが前提条件です!特に寝坊とか寝坊とか。

追記

蒲団の中で考えたけどこっちのほうがいいかなぁ…。*1

Array.fill = function(n, v)
{
    var t = Array(n + 1).join('$,');
    return (new Function('$', 'return ['+ t.slice(0, t.length-1) +'];'))(v);
};


こっちのほうがいいかも…。エラー処理なければワンライン。*2

Array.fill = function(n, v)
{
    if(n < 1){ throw new Error('A 1st argument must be a positive number.'); };
    return (new Function('$', 'return ['+ Array(n).join('$,') +'$];'))(v);
};

*1:2007/12/02(日)朝追加

*2:2007/12/02(日)昼追加