将JavaScript数组连接成一个字符串,使用与语言环境相关的分隔符

Array.prototype.join()是大多数开发者在将数组连接成字符串时会使用的工具。然而,它有一些限制,比如无法为最后一项使用不同的分隔符。幸运的是,有一个新的方法 - Intl.ListFormat - 可以帮助我们解决这个问题。

使用Intl.ListFormat()构造函数,我们可以创建更灵活的格式化器,允许我们指定分组类型(例如conjunctiondisjunction)和列表的样式(例如longshortnarrow)。然后,格式化器的format()方法可以用来将数组连接成一个字符串,并使用适当的分隔符。

const formatList = (arr, locale, type, style) =>
  new Intl.ListFormat(locale, { type, style }).format(arr);

formatList(['foo', 'bar', 'baz'], 'en-US', 'conjunction', 'short');
// 'foo, bar, & baz'
formatList(['foo', 'bar', 'baz'], 'en-US', 'conjunction', 'long');
// 'foo, bar, and baz'
formatList(['foo', 'bar', 'baz'], 'en-GB', 'conjunction', 'long');
// 'foo, bar and baz'
formatList(['foo', 'bar', 'baz'], 'en-US', 'disjunction', 'long');
// 'foo, bar, or baz'

[!NOTE]

如示例所示,'en-US'语言环境使用牛津逗号,而'en-GB'语言环境则不使用。