302

我可以像在 PHP 中一样在 jQuery 中内爆一个数组吗?

4

7 回答 7

580

您可以在纯 JavaScript 中执行此操作,请使用Array.prototype.join

arrayName.join(delimiter);
于 2010-11-10T17:03:10.313 回答
69

像这样:

[1,2,3,4].join('; ')
于 2010-11-10T17:02:44.087 回答
28

Array.join是您需要的,但如果您愿意,phpjs.org上的友好人士已经为您创建implode了。

然后是一些稍微偏离主题的咆哮。正如@jon_darkstar 已经指出的那样,jQuery 是 JavaScript,反之亦然。您无需了解 JavaScript 即可了解如何使用 jQuery,但它肯定不会受到伤害,一旦您开始欣赏可重用性或开始放眼大局,您绝对需要学习它。

于 2010-11-10T17:10:54.123 回答
18

为了将来参考,如果您想在没有指定分隔符时模仿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
于 2014-05-20T03:10:12.207 回答
11

使用join()方法通过连接数组中的所有元素来创建并返回一个新字符串。

工作示例

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

于 2019-02-27T06:28:53.473 回答
1

我们可以在 javascript 中创建 implode 的替代方案:

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);
于 2012-09-26T18:20:36.403 回答
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不要结束。

于 2013-03-03T23:24:14.893 回答