jQuery / Javascriptで配列を内包しますか?


回答:


546

プレーンなJavaScriptでこれを行うことができますArray.prototype.join

arrayName.join(delimiter)

私はもっ​​と良いjQuery関数を知りません。


4
モデレーターはこの回答を受け入れることができますか?私は最初にこれを読んでこの答えを逃しました。
PressingOnAlways


28

Array.joinが必要ですが、必要に応じて、phpjs.orgのフレンドリーな人々が作成implodeしてくれます。

次に、若干の話題から外れた発言。@jon_darkstarがすでに指摘したように、jQueryはJavaScriptであり、その逆はありません。jQueryの使用方法を理解するためにJavaScriptを理解する必要ありませんが、確かに害はありません。再利用性を高く評価し始めたり、全体像を見始めたら、絶対に学ぶ必要があります。


23
次に、javascriptは私のお気に入りのjQueryプラグインです;-)
jon_darkstar

16

将来の参考のため、区切り文字が指定されていない場合PHPのimplode()動作を模倣する場合(文字列を結合するだけです)、空の文字列をJavaScriptに渡す必要があります。join()そうでない場合は、デフォルトで区切り文字としてコンマを使用します。

var bits = ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'];
alert(bits.join());    // H,e,l,l,o, ,W,o,r,l,d
alert(bits.join(''));  // Hello World

10

join()メソッドを使用すると、配列内のすべての要素を連結して新しい文字列を作成して返します。

実施例

var arr= ['A','b','C','d',1,'2',3,'4'];
var res= arr.join('; ')
console.log(res);


1

JavaScriptでの内破の代替を作成できます。

function my_implode_js(separator,array){
       var temp = '';
       for(var i=0;i<array.length;i++){
           temp +=  array[i] 
           if(i!=array.length-1){
                temp += separator  ; 
           }
       }//end of the for loop

       return temp;
}//end of the function

var array = new Array("One", "Two", "Three");


var str = my_implode_js('-',array);
alert(str);

12
やらないことの教科書事件。ループ内で文字列の連結を実行しないでください。高速組み込み関数を独自の低速コードに置き換えないでください。Arrayリテラルの代わりにコンストラクタを使用すると、不必要に冗長になります。内破する関数を再作成したい場合は、組み込みの結合メソッドを独自の関数でラップするのが賢明です。賢く事はあなたがプログラミングしている言語を学ぶことです。
mikerobi

0

array.join「;」を認識していなかった 区切り記号ですが、コンマに置き換えます。jQueryを使用$.eachすると、配列を分解するために使用できます(output_saved_jsonは配列で、tmpは分解された配列を格納する文字列です)。

var tmp = "";
$.each(output_saved_json, function(index,value) {
    tmp = tmp + output_saved_json[index] + ";";
});

output_saved_json = tmp.substring(0,tmp.length - 1); // remove last ";" added

サブストリングを使用して最後の「;」を削除しました 決勝で必要なく追加。ただし、必要に応じて、代わりにsubstring次のようなものを使用できます。

var tmp = "";
$.each(output_saved_json, function(index,value) {
    tmp = tmp + output_saved_json[index];

    if((index + 1) != output_saved_json.length) {
         tmp = tmp + ";";
    }
});

output_saved_json = tmp;

この最後の解決策は、インデックスが$.each終了しないうちに毎回配列の長さと異なるかどうかをチェックする必要があるため、最初の解決策よりも遅いと思います。


「;」ではなく「、」を取得した場合 区切り文字をjoinメソッドに渡すのを忘れていました。試してみるyour_array.join(';')
ミケロビ2013

その時に試してみましたが、IEでは動作しませんでした(バージョンを正確に覚えていませんが、IE6だと思います)。その間サポートする必要がありました(エンタープライズアプリ...)。新しいブラウザでは、あなたのメモはおそらく意味があります。マイクに感謝し、なぜ私がこの方法を使用したのかと尋ねる前に反対投票に感謝します。
ジェイズ主催2013

1
joinパラメータは、IE 4、5、5.5、6以降で機能します。IE3で作業したことはないかもしれませんが、JavaScriptを実行するためのコピーを取得できないため、テストできません。
ミケロビ2013

はい、動作します。「;」ではありません。参加しますが、「;」を置き換えます 「、」で、少なくともServer 2003では
2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.