用JavaScript内爆数组?

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

254032 次浏览

是这样的:

[1,2,3,4].join('; ')

你可以在纯JavaScript中使用Array.prototype.join:

arrayName.join(delimiter);

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

然后是一些离题的咆哮。正如@jon_darkstar已经指出的,jQuery是JavaScript,而不是JavaScript。你不需要需要了解JavaScript才能理解如何使用jQuery,但这当然不会伤害到你,一旦你开始欣赏可重用性或开始着眼于更大的图景,你绝对需要学习它。

我们可以在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);

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删除最后一个“;”添加在最后没有必要。 但如果你愿意,你可以使用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不结束。

作为将来的参考,如果你想模仿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

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

工作示例

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