« JavaScript第5版読書会#1無事終了しました | メイン | Firefoxのステッカーとふぉくすけのシール »

「配列の初期値を指定する方法」の「一文字の文字列しか指定できない制限」の打破を試みる

JavaScript第5版読書会#1で話題にあがった「配列の初期値を指定する方法」について、higeorangeさんのBlogにコメントしました。
処理の関係上、初期値には一文字の文字列しか指定できません。
また、空文字の場合正常に動作しないため、例外処理が必要になります。

function arrayFill(num,str){
if(str.constructor!=String||str.length!=1){
return new Array(num);
}else if(str==""){
return (new Array(num)).join("*").split("*");
}else{
return (new Array(num+1)).join(str).split("");
}
}
この、「一文字の文字列しか指定でき」ない制限を打破できないかと思い、実装を試みてみます。
function arrayFill(num,str){
    if(str.constructor!=String){
        return new Array(num);
    }else if(str==""){
        return (new Array(num)).join("*").split("*");
    }else{
        var dummy="";
        //初期値に部分一致しない文字列の作成
        while(str.indexOf(dummy)!=-1){
            dummy+=String.fromCharCode(Math.floor(Math.round()*26)+65);
        }
        return ((new Array(num)).join(str+dummy)+str).split(dummy);
    }
}
一見、うまく動作しそうですが、「strとdummyの接合部分でdummyと一致する文字列が生成」された場合、不具合が生じてします。例えば、「atr="AB";dummy="ABA";」となってしまった場合です。
他にも色々と試してみましたがうまくいきません。諦める事にします。

トラックバック

このエントリーのトラックバックURL:
http://www.kanasansoft.com/cgi/mt/mt-tb.cgi/64

この一覧は、次のエントリーを参照しています: 「配列の初期値を指定する方法」の「一文字の文字列しか指定できない制限」の打破を試みる:

» 配列の初期値を指定する 送信元 ema log
素直に Array.prototype.fill = function( value ) { for( var i=0; i < ... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google