我有一个JavaScript中的一维字符串数组,我想把它转换成一个逗号分隔的列表。在普通JavaScript(或jQuery)中是否有一种简单的方法将其转换为逗号分隔的列表?(我知道如何通过数组迭代,并通过连接自己构建字符串,如果这是唯一的方法。)


当前回答

包含分隔符(逗号)的字符串的安全方法

let arr = ["Hello, there", "How's there", 'the "best"']
let csv = arr.map(e => JSON.stringify(e)).join(",")
console.log(csv)

结果

"Hello, there","How's there","the \\"best\\""

其他回答

或者(更有效地):

var arr = new Array(3);
arr[0] = "Zero";
arr[1] = "One";
arr[2] = "Two";

document.write(arr); // same as document.write(arr.toString()) in this context

当调用数组的toString方法时,返回的正是您所需要的—逗号分隔的列表。

var arr = ["Pro1", "Pro2", "Pro3"];
console.log(arr.join());// Pro1,Pro2,Pro3
console.log(arr.join(', '));// Pro1, Pro2, Pro3

如果你需要用“and”代替“”,在最后两项之间,你可以这样做:

function arrayToList(array){
  return array
    .join(", ")
    .replace(/, ((?:.(?!, ))+)$/, ' and $1');
}

该解决方案还删除了诸如“”这样的值:

const result = ['', null, 'foo', '  ', undefined, 'bar'].filter(el => {
  return Boolean(el) && el.trim() !== '';
}).join(', ');

console.log(result); // => foo, bar

我喜欢https://jsfiddle.net/rwone/qJUh2/上的解决方案,因为它在逗号后添加了空格:

array = ["test","test2","test3"]
array = array.toString();
array = array.replace(/,/g, ", ");
alert(array);

或者,正如@ stackover缺陷在评论中建议的那样:

array.join(', ');