เข้ารหัสอาร์เรย์ด้วย jQuery / Javascript หรือไม่


คำตอบ:


546

คุณสามารถทำได้ใน JavaScript ธรรมดาใช้Array.prototype.join:

arrayName.join(delimiter)

ฉันไม่รู้ฟังก์ชัน jQuery ใด ๆ ที่ดีกว่านี้


4
กำลังของผู้ดูแลสามารถยอมรับคำตอบนี้หรือบางวิธีทำให้ไปด้านบน ฉันพลาดคำตอบนี้ในขั้นต้นอ่านนี้
PressingOnAlways


28

Array.joinคือสิ่งที่คุณต้องการ แต่ถ้าคุณต้องการคนที่เป็นมิตรที่phpjs.orgได้สร้างขึ้นมาimplodeเพื่อคุณ

จากนั้นบางหัวข้อก็คุยโวเล็กน้อย ตามที่ @jon_darkstar alreadt ชี้ให้เห็น jQuery เป็น JavaScript และไม่ได้ตรงกันข้าม คุณไม่จำเป็นต้องรู้จาวาสคริปต์เพื่อให้สามารถเข้าใจวิธีการใช้ jQuery ได้ แต่มันก็ไม่เจ็บและเมื่อคุณเริ่มชื่นชมความสามารถในการนำกลับมาใช้ใหม่หรือเริ่มดูภาพที่ใหญ่ขึ้นคุณต้องเรียนรู้อย่างยิ่ง


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

ใช้การเข้าร่วม ()วิธีการสร้างและส่งกลับสตริงใหม่โดยเชื่อมต่อองค์ประกอบทั้งหมดในอาร์เรย์

ตัวอย่างการทำงาน

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


1

เราสามารถสร้างทางเลือกของ implode ใน 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สร้างแทนตัวอักษรเป็น verbose ที่ไม่จำเป็น หากคุณหมดหวังที่จะสร้างฟังก์ชั่น implode สิ่งที่ชาญฉลาดจะห่อวิธีการรวมที่มีอยู่ในตัวด้วยฟังก์ชั่นของคุณเอง สิ่งที่ฉลาดกว่าคือการเรียนรู้ภาษาที่คุณใช้ในการเขียนโปรแกรม
mikerobi

0

array.joinไม่รู้จัก ";" เป็นตัวคั่น แต่แทนที่ด้วยเครื่องหมายจุลภาค การใช้ jQuery คุณสามารถใช้$.eachเพื่อ implode อาเรย์ (โปรดทราบว่า output_saved_json เป็นอาเรย์และ tmp เป็นสตริงที่จะเก็บอาเรย์ที่ imploded):

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หรือไม่


หากคุณได้รับ ',' แทนที่จะเป็น ';' คุณลืมส่งตัวคั่นไปยังวิธีการเข้าร่วม ลองyour_array.join(';')
mikerobi

ฉันลองในเวลานั้น แต่มันไม่ทำงานใน IE (ฉันจำรุ่นไม่ถูกต้อง แต่ฉันคิดว่านั่นเป็น IE6) ฉันต้องการการสนับสนุนในเวลานั้น (แอปสำหรับองค์กร ... ) ในเบราว์เซอร์รุ่นใหม่โน้ตของคุณอาจสมเหตุสมผล ขอบคุณสำหรับบันทึกไมค์และขอบคุณสำหรับ downvote ก่อนถามว่าทำไมฉันใช้วิธีนี้
jaysponsored

1
พารามิเตอร์ join ใช้งานได้ใน IE 4, 5, 5.5, 6+ ฉันอาจไม่ได้ทำงานใน IE3 แต่ฉันไม่สามารถรับสำเนาของฉันเพื่อเรียกใช้ JavaScript ใด ๆ ดังนั้นฉันจึงไม่สามารถทดสอบได้
mikerobi

ใช่มันใช้งานได้ แต่ไม่ใช่ด้วย ";" มันเข้าร่วม แต่แทนที่ ";" ด้วย "," อย่างน้อยใน Server 2003
jaysponsored
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.