数组到字符串并替换数组中的最后一个逗号(不是字符串)

pan*_*hro -1 javascript

我有一个数组(请注意,tropical 和 pineapple 在同一个数组值中):

'apple', 'pear', 'orange', 'tropical, pineapple'
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个字符串,并用“和”替换最后一个逗号。

我执行:

fruits.join(', ');
fruits.replace(/,([^,]*)$/,'\ and$1');
Run Code Online (Sandbox Code Playgroud)

这给出:

apple, pear, orange, tropical and pineapple
Run Code Online (Sandbox Code Playgroud)

而我需要替换数组中的最后一个逗号,而不是数组值中的任何逗号。

我在找:

apple, pear, orange and tropical, pineapple
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Ber*_*rgi 5

只是不要join在完整的数组上。相反,使用

fruits.slice(0, -1).join(", ")+" and "+fruits[fruits.length-1];
Run Code Online (Sandbox Code Playgroud)

如果您不再需要该数组,您还可以对其进行变异,这让事情变得简单一些:

var last = fruits.pop();
console.log(fruits.join(", ")+" and "+last);
Run Code Online (Sandbox Code Playgroud)

我们还需要考虑空输入的情况,所以它应该看起来像

if (fruits.length <= 1)
    return fruits.join(", ");
else
    return fruits.slice(0, -1).join(", ")+" and "+fruits[fruits.length-1];
Run Code Online (Sandbox Code Playgroud)

您可能希望将其包装在辅助函数中。