JQuery / Javascript ile bir dizi mi yerleştirilir?


Yanıtlar:


546

Bunu düz JavaScript ile yapabilirsiniz, şunu kullanın Array.prototype.join:

arrayName.join(delimiter)

Daha iyi herhangi bir jQuery işlevi bilmiyorum.


4
Moderatör bir kuvvet bu cevabı kabul edebilir mi, yoksa tepeye nasıl ulaşabilir? Başlangıçta bunu okurken bu cevabı kaçırdım.
PressingOnAlways


28

Array.joinİhtiyacınız olan şey budur, ancak isterseniz phpjs.org'daki dost insanlar sizin için yarattı implode.

Sonra biraz konu dışı biraz. @Jon_darkstar alreadt belirttiği gibi, jQuery JavaScript ve tersi değil. JQuery'nin nasıl kullanılacağını anlayabilmek için JavaScript bilmenize gerek yoktur , ancak kesinlikle zarar vermez ve yeniden kullanılabilirliği takdir etmeye veya daha büyük resme bakmaya başladığınızda, kesinlikle öğrenmeniz gerekir.


23
sonra tekrar, javascript benim favori jQuery eklentisi IS ;-)
jon_darkstar

16

Eğer mimik için davranışını istiyorsanız İleride, PHP'nin implode()zaman hiçbir sınırlayıcı belirtilir (kelimenin tam anlamıyla sadece Parçaları bir araya katılmak) kullanarak, JavaScript'ın içine boş bir dize geçmesi gerekiyor join()sınırlayıcı olarak virgül kullanarak aksi takdirde varsayılan:

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 () yöntemini kullan , bir dizideki tüm öğeleri birleştirerek yeni bir dize oluşturur ve döndürür.

Çalışma örneği

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


1

Javascript'te implode alternatifi oluşturabiliriz:

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
Ders kitabı yapmamak şeyler. Bir döngüde dize birleştirme gerçekleştirmeyin. Hızlı yerleşik işlevleri kendi yavaş kodunuzla değiştirmeyin. Kullanılması Arraydeğişmezleri yerine yapıcı unecessarily ayrıntılı olmalıdır. Implode işlevini yeniden oluşturmak için çaresizseniz, akıllı şey yerleşik birleştirme yöntemini kendi işlevinizle sarmak olacaktır. Daha akıllı olan şey, programladığınız dili öğrenmektir.
mikerobi

0

array.join";" nasıl bir ayırıcı, ama virgül ile değiştirilmesi. JQuery kullanarak, $.eachbir dizi implode etmek için kullanabilirsiniz (output_saved_json'un dizi ve tmp'nin yerleştirilen diziyi saklayacak dize olduğunu unutmayın):

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

Son ";" kaldırmak için alt dize kullandım gerek olmadan finalde eklendi. Ancak isterseniz, bunun substringgibi bir şey kullanabilirsiniz :

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;

Ben bu son çözüm birinciden daha yavaş olduğunu düşünüyorum çünkü $.eachbitmeyen her zaman dizinin dizi uzunluğundan farklı olup olmadığını kontrol etmek gerekiyor .


';' Yerine ',' alıyorsanız; ayırıcıyı join yöntemine aktarmayı unutuyordunuz. Deneyinyour_array.join(';')
mikerobi

O zaman denedim ama IE'de işe yaramadı (sürümü tam olarak hatırlamıyorum, ancak IE6 olduğunu düşünüyorum). O zamanlar desteklemem gerekiyordu (Enterprise uygulaması ...). Daha yeni tarayıcılarda notunuz muhtemelen anlamlıdır. Mike için not için teşekkürler ve neden bu yöntemi kullandığımı sormadan ÖNCE aşağı oy için teşekkürler.
Nisan'ta

1
Join parametresi IE 4, 5, 5.5, 6+ ile çalışır. IE3'te çalışmamış olabilirim, ancak herhangi bir JavaScript'i çalıştırmak için kopyamı alamıyorum, bu yüzden test edemiyorum.
mikerobi

Evet çalışıyor. Ama ";" ile değil. Birleşiyor ama ";" "," ile, en azından Sunucu 2003'te.
jaysponsored
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.