Javascript 使用lodash获取嵌套对象属性
我有一个带有国家代码的嵌套对象。我需要根据条件使用lodash获取相应的货币属性 我是lodash的新手,不确定我可以在这里使用哪种方法 例如。, 当我搜索国家代码“AU”对应的货币时,它应该返回“AUD” 目前,我得到了整个对象 我该怎么做Javascript 使用lodash获取嵌套对象属性,javascript,object,ecmascript-6,nested,lodash,Javascript,Object,Ecmascript 6,Nested,Lodash,我有一个带有国家代码的嵌套对象。我需要根据条件使用lodash获取相应的货币属性 我是lodash的新手,不确定我可以在这里使用哪种方法 例如。, 当我搜索国家代码“AU”对应的货币时,它应该返回“AUD” 目前,我得到了整个对象 我该怎么做 var myJSON={ “国家代码”:{ “澳大利亚”:“非盟”, “美国”:“美国”, “英国”:“GB”, “日本”:“日本”, “印度”:“印度”, “法国”:“法国”, “俄罗斯”:“俄罗斯” }, “国家”:{ “AE”:{ “货币”:{ “
var myJSON={
“国家代码”:{
“澳大利亚”:“非盟”,
“美国”:“美国”,
“英国”:“GB”,
“日本”:“日本”,
“印度”:“印度”,
“法国”:“法国”,
“俄罗斯”:“俄罗斯”
},
“国家”:{
“AE”:{
“货币”:{
“AED”:{
“isDefault”:正确
}
}
},
“AL”:{
“货币”:{
“全部”:{
“isDefault”:正确
}
}
},
“非盟”:{
“货币”:{
“澳元”:{
“isDefault”:正确
}
}
},
“美国”:{
“货币”:{
“美元”:{
“isDefault”:正确
}
}
},
“GB”:{
“货币”:{
“欧元”:{
“isDefault”:正确
}
}
},
“FR”:{
“货币”:{
“欧元”:{
“isDefault”:正确
}
}
},
“JP”:{
“货币”:{
“日元”:{
“isDefault”:正确
}
}
},
“RS”:{
“货币”:{
"区署:{
“isDefault”:false
}
}
},
“ZA”:{
“货币”:{
“南非兰特”:{
“isDefault”:正确
}
}
}
}
};
函数getData(){
var countryCode=['AU','ZA','JP'];
log(json.pick(myJSON.countries,countryCode));
log(0.values(0.pick(myJSON.countries,countryCode));
}
获取数据
Pick将按要求执行操作
而是这样做:
countryCode.map((ct) => Object.keys(myJSON.countries[ct].currencies)[0]);
当我搜索国家代码“AU”对应的货币时,
它应该返回'AUD'
也可以尝试这个vanila js解决方案,使用map
var countryCode = ['AU', 'ZA', 'JP'];
var output = countryCode.map( s => Object.keys( myJSON.countries[ s ].currencies[ 0 ] ) );
lodash的做法如下所示: 函数getData(){ var countryCode=['AU','ZA','JP']; console.log( _(myJSON.国家) .pick(国家代码) .values() .map(函数(值){return}.keys(value.currences)[0];}) .value() );
}很遗憾,这段代码在旧浏览器中不起作用。@Alex由于使用了箭头函数?是的,Object.keys和array.map在旧浏览器中也不起作用:(我们谈论的年龄是多少?
map
和Object。键
都很老了!就像IE8:D一样。实际上我喜欢你的答案,它应该在95%的情况下都有效,我给出了另一个答案,只是因为已经提到了lodash(而且它看起来更漂亮)谢谢,但这给了我国家代码。我需要货币。啊,是的。马上就要换了。我误解了它,因为“期望输出:['AUD','ZAR','JP']”是的,它应该按照期望输出显示。但是,我从你的解决方案中得到的与国家代码完全相同。