我是一个带有国家/地区代码的嵌套对象。我需要根据条件使用lodash获取相应的货币属性。
我是lodash的新手,不知道我可以在这里使用哪种方法。
例如, 当我搜索countryCode' AU'的相应货币时,它应该返回' AUD'。
目前,我得到了整个对象。
我该如何完成这项工作?
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() {
var countryCode = ['AU', 'ZA', 'JP'];
console.log(_.pick(myJSON.countries, countryCode));
console.log(_.values(_.pick(myJSON.countries, countryCode)));
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.core.js"></script>
<button onclick="getData()">Get Data</button>
&#13;
电流输出: {AU:{...},ZA:{...},JP:{...}}
期望的输出:
[&#39; AUD&#39;,&#39; ZAR&#39;,&#39; JP&#39;]
以下是代码:
答案 0 :(得分:1)
当我搜索countryCode&#39; AU&#39;的相应货币时, 它应该返回&#39; AUD&#39;。
尝试使用此vanila js解决方案,使用map
var countryCode = ['AU', 'ZA', 'JP'];
var output = countryCode.map( s => Object.keys( myJSON.countries[ s ].currencies[ 0 ] ) );
答案 1 :(得分:1)
执行此操作的方式如下:
function getData() {
var countryCode = ['AU', 'ZA', 'JP'];
console.log(
_(myJSON.countries)
.pick(countryCode)
.values()
.map(function(value) { return _.keys(value.currencies)[0]; })
.value()
);
}
&#13;
答案 2 :(得分:0)
Pick会按照要求去做。
而是这样做:
countryCode.map((ct) => Object.keys(myJSON.countries[ct].currencies)[0]);