数组到逗号分隔的字符串和最后一个标记在jquery中使用'和'而不是逗号

Sul*_*man 23 javascript jquery

我已经用逗号分隔的字符串检查了许多关于连接数组的问题和答案,但我的问题是,我正在使字符串对人类可读,即我有标签数组,如果它们是两个标签,那么它将是tag1 and tag2,如果它们是100标签然后它将是tag1, tag2, ,,,tag99 and tag100最后一个使用and和之前使用逗号作为分隔符.

在JQuery中处理的任何方法?

Ble*_*der 71

你可以使用.slice():

> var a = [1, 2, 3, 4, 5];
> [a.slice(0, -1).join(', '), a.slice(-1)[0]].join(a.length < 2 ? '' : ' and ');
'1, 2, 3, 4 and 5'
Run Code Online (Sandbox Code Playgroud)
  • a.slice(0, -1).join(', '):获取除最后一个元素以外的所有元素并使用逗号将它们连接在一起.
  • a.slice(-1)[0]:这是最后一个元素.
  • .join(a.length < 2 ? '' : ' and '):and如果至少有两个元素,则连接该字符串和最后一个元素.

  • 仅供新读者使用,即使使用1个元素,也可以更新. (5认同)
  • 它不能完美工作,只需尝试使用 1 个元素的数组。 (2认同)

cip*_*her 20

另一个快速解决方案是用和替换最后一个逗号.

以下代码:

var a = [0,1,2,3,4];
a.join(', ').replace(/,(?!.*,)/gmi, ' and');
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.(另外,根据需要使用正则表达式修饰符).

一个可能的问题可能是你有大阵列的时候,但它应该工作.

  • 这应该是接受的答案,因为它将与长度为1的列表一起使用.如果列表包含包含逗号的字符串,那么它将无法工作,但是解决方法是使用占位符字符串,然后替换那些,如果这是合理的关注.好答案! (4认同)