You could load a known list via this XML:
https://www.currency-iso.org/dam/downloads/lists/list_one.xml
The list was found here: https://www.currency-iso.org/en/home/tables/table-a1.html
<ISO_4217 Pblshd="2018-08-29">
<CcyTbl>
<CcyNtry>
<CtryNm>
UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)
</CtryNm>
<CcyNm>Pound Sterling</CcyNm>
<Ccy>GBP</Ccy>
<CcyNbr>826</CcyNbr>
<CcyMnrUnts>2</CcyMnrUnts>
</CcyNtry>
<CcyNtry>
<CtryNm>UNITED STATES OF AMERICA (THE)</CtryNm>
<CcyNm>US Dollar</CcyNm>
<Ccy>USD</Ccy>
<CcyNbr>840</CcyNbr>
<CcyMnrUnts>2</CcyMnrUnts>
</CcyNtry>
</CcyTbl>
</ISO_4217>
var xmlString = getSampleCurrencyXml();
var xmlData = (new window.DOMParser()).parseFromString(xmlString, "text/xml");
var knownCodes = [].slice.call(xmlData.querySelectorAll('Ccy')).map(n => n.textContent)
// Fetch the XML instead?
fetch('https://www.currency-iso.org/dam/downloads/lists/list_one.xml', { cache: 'default' })
.then(response => response.text())
.then(xmlStr => (new window.DOMParser()).parseFromString(xmlStr, "text/xml"))
.then(data => knownCodes = data); // This may not work in the Stack Snippet
console.log(getSupportedCurrencies().map(c => c.code + '' + c.name).join('
'));
function getSupportedCurrencies() {
function $(amount, currency) {
return Intl.NumberFormat('en-US', {
style: 'currency',
currency: currency,
currencyDisplay: 'name'
}).format(amount);
}
return knownCodes.reduce((currencies, cur) => {
return (output => {
return output.replace(/^[^ ]+ /, '') !== cur ?
currencies.concat({
code: cur,
name: output.match(/(?<= ).+/)[0]
}) :
currencies;
})($(0, cur).trim());
}, []);
}
function getSampleCurrencyXml() {
return `
<ISO_4217 Pblshd="2018-08-29">
<CcyTbl>
<CcyNtry>
<CtryNm>
UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)
</CtryNm>
<CcyNm>Pound Sterling</CcyNm>
<Ccy>GBP</Ccy>
<CcyNbr>826</CcyNbr>
<CcyMnrUnts>2</CcyMnrUnts>
</CcyNtry>
<CcyNtry>
<CtryNm>UNITED STATES OF AMERICA (THE)</CtryNm>
<CcyNm>US Dollar</CcyNm>
<Ccy>USD</Ccy>
<CcyNbr>840</CcyNbr>
<CcyMnrUnts>2</CcyMnrUnts>
</CcyNtry>
</CcyTbl>
</ISO_4217>
`;
}
.as-console-wrapper { top: 0; max-height: 100% !important; }
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…