对于这个令人尴尬的简单问题深表歉意,但我对 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/