Implode một mảng với jQuery / Javascript?


Câu trả lời:


546

Bạn có thể làm điều này bằng JavaScript đơn giản, sử dụng Array.prototype.join:

arrayName.join(delimiter)

Tôi không biết bất kỳ hàm jQuery nào tốt hơn.


4
Một người điều hành có thể chấp nhận câu trả lời này hoặc một số cách làm cho nó lên đến đỉnh? Tôi đã bỏ lỡ câu trả lời này ban đầu khi đọc nó.
Nhấn OnOnways


28

Array.joinlà những gì bạn cần, nhưng nếu bạn thích, những người thân thiện tại phpjs.org đã tạo ra implodecho bạn.

Sau đó một số chủ đề hơi lạc đề. Như @jon_darkstar alreadt đã chỉ ra, jQuery là JavaScript chứ không phải ngược lại. Bạn không cần biết JavaScript để có thể hiểu cách sử dụng jQuery, nhưng chắc chắn nó không gây hại và một khi bạn bắt đầu đánh giá cao khả năng sử dụng lại hoặc bắt đầu nhìn vào bức tranh lớn hơn, bạn thực sự cần phải học nó.


23
sau đó, một lần nữa, javascript là plugin jQuery yêu thích của tôi ;-)
jon_darkstar

16

Để tham khảo trong tương lai, nếu bạn muốn bắt chước hành vi của PHP implode()khi không có dấu phân cách nào được chỉ định (nghĩa đen chỉ là nối các phần lại với nhau), bạn cần chuyển một chuỗi trống vào Javascript join()nếu không nó mặc định sử dụng dấu phẩy làm dấu phân cách:

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

Sử dụng phương thức tham gia () tạo và trả về một chuỗi mới bằng cách nối tất cả các phần tử trong một mảng.

Ví dụ làm việc

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


1

Chúng tôi có thể tạo thay thế cho mã hóa trong 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
Trường hợp sách giáo khoa những điều không nên làm. Không thực hiện nối chuỗi trong một vòng lặp. Không thay thế các chức năng được xây dựng nhanh bằng mã chậm của riêng bạn. Sử dụng hàm Arraytạo thay vì nghĩa đen là dài dòng không cần thiết. Nếu bạn mong muốn tạo lại hàm implode, điều thông minh sẽ là bọc phương thức nối liền với hàm riêng của bạn. Điều thông minh hơn là học ngôn ngữ bạn đang lập trình.
mikerobi

0

array.joinđã không nhận ra ";" làm thế nào một dấu phân cách, nhưng thay thế nó bằng dấu phẩy. Sử dụng jQuery, bạn có thể sử dụng $.eachđể mã hóa một mảng (Lưu ý rằng output_satted_json là mảng và tmp là chuỗi sẽ lưu trữ mảng được mã hóa):

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

Tôi đã sử dụng chuỗi con để loại bỏ ";" thêm vào cuối cùng mà không cần thiết Nhưng nếu bạn thích, bạn có thể sử dụng thay vì substringmột cái gì đó như:

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;

Tôi nghĩ giải pháp cuối cùng này chậm hơn giải pháp thứ nhất vì nó cần kiểm tra xem chỉ số có khác với chiều dài của mảng mỗi lần $.eachkhông kết thúc hay không.


Nếu bạn nhận được một ',' thay vì một ';' bạn đã quên chuyển dấu phân cách vào phương thức nối. Hãy thửyour_array.join(';')
mikerobi

Tôi đã thử nó vào thời điểm đó nhưng nó không hoạt động trong IE (Tôi không nhớ chính xác phiên bản, nhưng tôi nghĩ đó là IE6). Tôi cần hỗ trợ nó trong thời gian đó (Ứng dụng doanh nghiệp ...). Trong trình duyệt mới, ghi chú của bạn có thể có ý nghĩa. Cảm ơn bạn đã lưu ý Mike và cảm ơn vì đã downvote TRƯỚC KHI hỏi TẠI SAO tôi đã sử dụng phương pháp này.
jaysp tài trợ

1
Tham số tham gia hoạt động trong IE 4, 5, 5.5, 6+. Tôi có thể đã làm việc trong IE3 nhưng tôi không thể lấy bản sao của mình để thực thi bất kỳ JavaScript nào, vì vậy tôi không thể kiểm tra.
mikerobi

Có nó hoạt động. Nhưng không phải với ";". Nó tham gia nhưng thay thế ";" với ",", ít nhất là trên Máy chủ 2003.
trợ vào
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.