将JavaScript数组转换为逗号分隔列表的简单方法?

将JavaScript数组转换为逗号分隔列表的简单方法?,javascript,Javascript,我有一个JavaScript中的一维字符串数组,我想将其转换为逗号分隔的列表。在各种各样的JavaScript(或jQuery)中是否有一种简单的方法将其转换为逗号分隔的列表?(如果这是唯一的方法,我知道如何迭代数组并通过连接构建字符串。)方法: var arr=[“零”、“一”、“二”]; 文件写入(arr.join(“,”)或(更有效): var-arr=新阵列(3); arr[0]=“零”; arr[1]=“一”; arr[2]=“两个”; 文件。写入(arr);//与此上下文中的doc

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

方法:

var arr=[“零”、“一”、“二”];
文件写入(arr.join(“,”)或(更有效):

var-arr=新阵列(3); arr[0]=“零”; arr[1]=“一”; arr[2]=“两个”; 文件。写入(arr);//与此上下文中的document.write(arr.toString())相同
调用数组的toString方法时,它会返回您所需要的内容—逗号分隔的列表。

实际上,
toString()
实现在默认情况下使用逗号进行连接:

var arr = [ 42, 55 ];
var str1 = arr.toString(); // Gives you "42,55"
var str2 = String(arr); // Ditto

我不知道这是否是JS规范规定的,但这几乎是所有浏览器都在做的事情。

下面是一个实现,它将二维数组或列数组转换为正确转义的CSV字符串。这些函数不检查有效的字符串/数字输入或列计数(确保数组一开始是有效的)。单元格可以包含逗号和引号

这是一个例子

这是我的:

//示例
var csv=new csvWriter();
csv.del='\t';
csv.enc=“”;
零风险值;
var testStr=“逗号(,)管道(|)单引号(')双引号(\)和制表符(\t)通常用于以纯文本格式将数据制成表格。”;
var testArr=[
假,,
0,
零值,
//未定义的,
'',
{键:'value'},
];
log(csv.escapeCol(testStr));
console.log(csv.arraytorw(testArr));
log(csv.arraytocvs([testArr,testArr,testArr]);
/**
*用于创建csv字符串的类
*处理多种数据类型
*对象被强制转换为字符串
**/
功能CSV编写器(del、enc){
this.del=del | |',';//CSV分隔符
this.enc=enc | |'“';//CSV存储模块
//将对象转换为CSV列
this.escapeCol=函数(col){
if(伊斯南(col)){
//不是布尔值或数字
如果(!col){
//为null或未定义
col='';
}否则{
//是字符串还是对象
col=字符串(col);
如果(列长度>0){
//使用正则表达式测试del、enc\r或\n
//if(新RegExp('['+this.del+this.enc+'\r\n]').test(col)){
//逃生内联外壳
col=col.split(this.enc).join(this.enc+this.enc);
//用外壳包裹
col=this.enc+col+this.enc;
}
}
}
返回列;
};
//将列数组转换为转义的CSV行
this.arrayToRow=函数(arr){
var arr2=arr.slice(0);
var i,ii=2.5米长;
对于(i=0;i
我认为应该这样做:

var arr = ['contains,comma', 3.14, 'contains"quote', "more'quotes"]
var item, i;
var line = [];

for (i = 0; i < arr.length; ++i) {
    item = arr[i];
    if (item.indexOf && (item.indexOf(',') !== -1 || item.indexOf('"') !== -1)) {
        item = '"' + item.replace(/"/g, '""') + '"';
    }
    line.push(item);
}

document.getElementById('out').innerHTML = line.join(',');
var arr=['contains,comma',3.14',contains“quote',more“quotes”]
var项目,i;
var行=[];
对于(i=0;i


基本上,它只需检查字符串是否包含逗号或引号。如果包含逗号或引号,则将所有引号加倍,并在末尾加引号。然后用逗号连接每个部分。

获取初始代码:

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

使用联接函数的初始答案是理想的。要考虑的一个问题是字符串的最终使用。

用于某些终端文本显示:

arr.join(",")
=> "Zero,One,Two"
用于在URL中使用以(某种程度上)RESTful方式传递多个值:

arr.join("|")
=> "Zero|One|Two"

var url = 'http://www.yoursitehere.com/do/something/to/' + arr.join("|");
=> "http://www.yoursitehere.com/do/something/to/Zero|One|Two"

当然,这一切都取决于最终的使用。只要记住数据源和使用,一切都会正常进行。

使用内置的
数组。toString
方法

var arr = ['one', 'two', 'three'];
arr.toString();  // 'one,two,three'

是否以“和”结尾

对于这种情况,我创建了一个npm模块

尝试:


用法

安装

阅读更多


你自己试试看

如果您需要在最后两项之间使用“和”而不是“,”,您可以这样做:

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

我通常会发现自己需要一些东西,如果该值是
null
未定义的
,那么它也会跳过该值,等等

因此,以下是对我有效的解决方案:

// Example 1
const arr1 = ['apple', null, 'banana', '', undefined, 'pear'];
const commaSeparated1 = arr1.filter(item => item).join(', ');
console.log(commaSeparated1); // 'apple, banana, pear'

// Example 2
const arr2 = [null, 'apple'];
const commaSeparated2 = arr2.filter(item => item).join(', ');
console.log(commaSeparated2); // 'apple'
如果我的数组看起来像第二个示例中的数组,那么这里的大多数解决方案都会返回
。这就是为什么我更喜欢这个解决方案。

处理值和其他边缘情况下的逗号

(for节点已被弃用-您现在可以在浏览器和节点中使用Papa Parse。)

例如(节点)


有许多方法可以将数组转换为逗号分隔的列表

1.使用数组#连接 从

join()方法将数组(或类似数组的对象)的所有元素连接到一个字符串中

代码

var arr = ["this","is","a","comma","separated","list"];
arr = arr.join(",");
一小条
var arr=[“this”、“is”、“a”、“逗号”、“separated”、“list”];
arr=arr.join(“,”);
console.log(arr);
我喜欢上的解决方案,因为它在逗号后添加了空格:

array = ["test","test2","test3"]
array = array.toString();
array = array.replace(/,/g, ", ");
alert(array);
或者,正如@StackOverlaw在评论中所建议的:

array.join(', ');
截至,可以使用:

const vehicles=[‘摩托车’、‘公共汽车’、‘汽车’];
const formatter=新的Intl.ListFormat(
function arrayToList(array){
  return array
    .join(", ")
    .replace(/, ((?:.(?!, ))+)$/, ' and $1');
}
var array = ["Zero", "One", "Two"];
var s = array + [];
console.log(s); // => Zero,One,Two
// Example 1
const arr1 = ['apple', null, 'banana', '', undefined, 'pear'];
const commaSeparated1 = arr1.filter(item => item).join(', ');
console.log(commaSeparated1); // 'apple, banana, pear'

// Example 2
const arr2 = [null, 'apple'];
const commaSeparated2 = arr2.filter(item => item).join(', ');
console.log(commaSeparated2); // 'apple'
const csvParser = require('papaparse'); // previously you might have used babyparse
var arr = [1,null,"a,b"] ;
var csv = csvParser.unparse([arr]) ;
console.log(csv) ;
var arr = ["this","is","a","comma","separated","list"];
arr = arr.join(",");
array = ["test","test2","test3"]
array = array.toString();
array = array.replace(/,/g, ", ");
alert(array);
array.join(', ');
const result = ['', null, 'foo', '  ', undefined, 'bar'].filter(el => {
  return Boolean(el) && el.trim() !== '';
}).join(', ');

console.log(result); // => foo, bar
const arr = [1, 2, 3];
console.log(`${arr}`)