【发布时间】:2020-01-21 13:41:02
【问题描述】:
除了猜测(就像我在下面所做的那样)之外,是否有一种更直接和更有效的方式来反思检索您的 JavaScript 环境支持的所有货币的列表?
function getSupportedCurrencies() {
function $(amount, currency) {
let locale = 'en-US';
let options = {
style: 'currency',
currency: currency,
currencyDisplay: "name"
};
return Intl.NumberFormat(locale, options).format(amount);
}
const getAllPossibleThreeLetterWords = () => {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const arr = [];
let text = '';
for (let i = 0; i < chars.length; i++) {
for (let x = 0; x < chars.length; x++) {
for (let j = 0; j < chars.length; j++) {
text += chars[i];
text += chars[x];
text += chars[j];
arr.push(text);
text = '';
}
}
}
return arr;
};
let ary = getAllPossibleThreeLetterWords();
let currencies = [];
const rx = /(?<= ).+/; // This line doesn't work in Firefox versions older than version 78 due to bug 1225665: https://bugzilla.mozilla.org/show_bug.cgi?id=1225665
ary.forEach((cur) => {
let output = $(0, cur).trim();
if (output.replace(/^[^ ]+ /, '') !== cur) {
let obj = {};
obj.code = cur;
obj.name = output.match(rx)[0];
currencies.push(obj);
}
});
return currencies;
}
console.log(getSupportedCurrencies());
【问题讨论】:
-
我没有提交此代码以供审核。我只是把它作为一个低效的例子提供(否则本来是一个句子的问题)。
-
有趣的问题。但这有关系吗?
Intl.NumberFormat(),没有指定区域设置,将使用用户计算机的默认设置,这几乎总是我需要的,所以我很好奇为什么你需要用户计算机已安装的区域设置的完整列表。 -
@Shilly 不全是 locales,全是 currencies。不是来自计算机,而是来自当前环境。
-
也许是这个stackoverflow.com/questions/35126247/…的一个版本
-
我们是否可以让一个 powershell 或 bash 脚本将所有可用的语言环境作为环境变量注入节点?因为至少 powershell 可以遍历所有已安装的语言环境。还是比测试所有字母代码更糟糕?
标签: javascript node.js internationalization currency ecmascript-next