特定の文字列で連結して返す関数
String.prototype.connect=function(){
var connectString=this,text='';
foreach(arguments,function(){ //for(var i in arguments){}とfor(i=0;i<i.length;i++){}を使い分けされています
if(text){
text+=connectString;
}
text+=this;
});
return text;
};
このように、thisに指定された文字列で、引数にある文字列を連結する関数を作ったのですが、
例:
' - '.connect('a','b','c');
->a - b - c
配列などを渡した場合も表示したいのですが、typeof this=='object'で確認し、foreach(this,function(){/*~*/});
だと、その配列の中に更に配列がある場合、もう一度チェックし、foreachをやらなければなりません。
これではキリがないので、どうしたらいいでしょうか?
arguments.calleeや、whileなどでどうにかしようと思いましたが、難しくて出来ませんでした><
やりたいことは、こうです↓
'or'.connect('あ',['い',['う','え','お'],'か',['き'],['く','け'],'こ','さ'],'し','す','せ',[[['そ']][['た','ち','つ','て','と']]]);
->あorいorうorえorおorかorきorくorけorこorさorしorすorせorそorたorちorつorてorと
複雑かもしれませんが、お力をお貸しくださいm(_ _)m
お礼
returnは 1)関数内で処理した戻り値を変数として格納する。 function tashizan(n1,n2){ return n1+n2; } var val=tashizan(1,1); alert(val);//2 2)入力チェクに使える。 function isCheck ( val ) { return val === ''; } var isFlag = isCheck ( '' ); 3)関数内での処理を中止させ、呼び出し元へ戻させる。 function isCheck ( val ) { if ( val === '' ) return; alert ( val + 'は空文字ではありません' ); } の3つの使い方があるのですね。 なんとなく分かりました。使い慣れて理解を深めていきたいと思います。