Я уверен, это простой вопрос, но на самом деле я не могу найти решение.Может быть, кто-то может дать мне подсказку.
У меня есть этот тип массива объектов:
const Country = {
albania:
{
'iso':'al',
'countryNo': 70,
'name':
{
de: 'Albanien',
en: 'Albania',
pl: 'Albania',
},
'flag':'flag-icon-al',
'showCountry':true,
},
austria:
{
'iso':'at',
'countryNo': 38,
'name':
{
de: 'Österreich',
en: 'Austria',
pl: 'Austria',
},
'flag':'flag-icon-at',
'showCountry':true,
},
belgium:
{
'iso':'be',
'countryNo': 2,
'name':
{
de: 'Belgien',
en: 'Belgium',
pl: 'Belgia',
},
'flag':'flag-icon-be',
'showCountry':true,
},
...
Ключи этого объекта albania
, austria
и т. Д. Теперь я хочусортировать массив.Это я делаю с помощью функции lodash
sortBy
.
let countryList = _.sortBy(Country,'name[' + this.props.currentLanguage + ']');
Когда я перебираю массив countryList
, как я могу получить исходные ключи из массива объектов Country
, то есть albania
?
Я пытался работать с функцией map
, но тогда я получаю только ключи с именами 0
, 1
и т. Д.
countryList.map((country,key) => {
// country -> has all object information
// key -> 0, 1, 2 etc.
})
См. Рисунок отладки:
![enter image description here](https://i.stack.imgur.com/PKDev.png)
ОБНОВЛЕНИЕ
Есть ли лучшее решение, чем это:
countryList.map((country,key) => {
var key = Object.keys(Country).find(function(element) {
const countryInner = Country[element];
if(countryInner.countryNo === country.countryNo) {
return element;
}
});
if(country.showCountry === true) {
return (
<HashLink to="/#locations" className={"dropdown-item imageLink animated"} onClick={(e) => this.handleClickCountry(e, key)} key={"nav" + key}>{country.name[this.props.currentLanguage].toUpperCase()}</HashLink>
);
}
})