我正在尝试编写一个方法,它可以帮助我根据特定国家/地区返回所有货币的对象键数组。 但是,现在,我得到的是数组中所有货币的列表。
我主要需要使用ES6方法。我不想使用任何其他迭代器。
例如:我需要的是:
当我希望根据国家/地区代码“US”应用过滤器时,它应该返回一个带有货币['USD']的数组;
const myArr = Object.keys(myJSON.countries).filter((k) => (Object.keys(myJSON.countries[k].currencies)[0]) where country === 'US');
输出: [ 'USD']
这是我之前的问题的继续 - > ES6 Map to return an array of object keys only
你可以帮助我实现这个目标吗? 这是代码:
const elem = document.getElementById('currencyList');
var myJSON = {
"countryCode": {
"Australia": "AU",
"United States": "US",
"Britain": "GB",
"Japan": "JP",
"India": "IND",
"France": "FR",
"Russia": "RS"
},
"countries": {
"AE": {
"currencies": {
"AED": {
"isDefault": true
}
}
},
"AL": {
"currencies": {
"ALL": {
"isDefault": true
}
}
},
"AU": {
"currencies": {
"AUD": {
"isDefault": true
}
}
},
"US": {
"currencies": {
"USD": {
"isDefault": true
}
}
},
"GB": {
"currencies": {
"EUR": {
"isDefault": true
}
}
},
"FR": {
"currencies": {
"EUR": {
"isDefault": true
}
}
},
"JP": {
"currencies": {
"JPY": {
"isDefault": true
}
}
},
"RS": {
"currencies": {
"RSD": {
"isDefault": false
}
}
},
"ZA": {
"currencies": {
"ZAR": {
"isDefault": true
}
}
}
}
};
function getData() {
const myArr = Object.keys(myJSON.countries).map((k) => (Object.keys(myJSON.countries[k].currencies)[0]));
console.log(myArr);
for(var i=0; i< myArr.length; i++) {
el = document.createElement('option');
el.textContent = myArr[i];
el.value = myArr[i];
elem.appendChild(el);
}
}
<button onclick="getData()">Get Data</button>
<br />
<select id="currencyList">
</select>
答案 0 :(得分:2)
根据国家/地区代码,您可以使用数组语法访问该国家/地区的JSON树。 (您可能想先检查代码是否存在)
// You could get the country code from an HTML element if you wish
const countryCode = "US";
const myArray = Object.keys(myJSON.countries[countryCode].currencies);
console.log(myArray); // ["USD"]