javascript - 将数组转换为逗号分隔的文本

标签 javascript arrays string

对于这个令人尴尬的简单问题深表歉意,但我对 javascript 还是比较陌生。

我有一个名字数组,比如

var myArray = ['Hill M','Zhang F','Dong L', 'Wilkinson JS', 'Harris N'];

我想返回一个字符串,名称用逗号分隔,但最后两个名称之间有“and”,即

'Hill M, Zhang F, Dong L, Wilkinson JS and Harris N'

在 javascript 中执行此操作的最有效方法是什么?

如果我想调换名字和首字母怎么样,即返回

'M Hill, F Zhang, L Dong, JS Wilkinson and N Harris'

最佳答案

Array::slice()选择数组的一部分,并返回新数组。
Array::join()将数组的所有元素连接成一个字符串
String::concat()连接两个或多个字符串。

var myArray = ['Hill M','Zhang F','Dong L', 'Wilkinson JS', 'Harris N'];

console.log(myArray.slice(0, myArray.length - 1).join(', ').concat(
            ' and ' + myArray[myArray.length - 1]));

//Hill M, Zhang F, Dong L, Wilkinson JS and Harris N

改变他们的顺序:

var myArray = ['Hill M','Zhang F','Dong L', 'Wilkinson JS', 'Harris N'];

for(var i = 0; i < myArray.length; i++)
  myArray[i] = myArray[i].replace(/^(\S+)\s+(.+)$/, '$2 $1');

console.log(myArray.slice(0, myArray.length - 1).join(', ').concat(
            ' and ' + myArray[myArray.length - 1]));

//M Hill, F Zhang, L Dong, JS Wilkinson and N Harris

如果您想知道 str.replace(/^(\S+)\s+(.+)$/, '$2 $1');

/^(\S+)\s+(.+)$/ 是匹配以下字符串的正则表达式:

^    #starts with  
\S+  #one or more non whitespace characters, followed by  
\s+  #one or more whitespace characters, followed by  
.+   #one or more characters  
替换字符串中的

$1$2 代表正则表达式中的第一组和第二组(括号中的子模式)。

关于javascript - 将数组转换为逗号分隔的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2370168/

相关文章:

javascript - 卸载某些页面的js请求

java - 是否可以将 "Draw"字符串写入 Canvas ?

Java : Save Assigned String from method in an array

javascript - 打印前预览按页面划分的 HTML

javascript - 三JS : How to rotate object instead of rotating the camera?

javascript - jQuery Mobile 从新的 html 加载第二页

php - 如何使表中的 Drupal 7 可编辑字段仅供管理员使用

java - 现实生活中非矩形 N 维数组的例子是什么?

android - 具有多项选择的 ExpandableListView 将所选项目保存到数组中

c - 结构数组和使用指向函数的指针变量