使用下面的函数,可以通过知道父对象的名称来获取translate
属性。如果没有对象匹配,我希望函数选择具有翻译的国家/地区文本属性的对象。解决方案应该是jQuery / Javascript。这是我能走多远,我不知道从哪里开始。
function getCurrency(country) {
var currency = {
'Förenade Arabemiraten' : currData = {
'code' : 'AED',
'info' : 'Dirham',
'translate' : 'United Arab Emirates'
},
'Afghanistan' : currData = {
'code' : 'AFN',
'info' : 'Afghani',
'translate' : 'Afghanistan'
},
'Albanien' : currData = {
'code' : 'ALL',
'info' : 'Lek',
'translate' : 'Albania'
}
};
console.log(currency[country]);
if(currency[country] !== undefined) {
return currency[country];
}
else {
for (var key in currency) {
console.log(key);
}
}
}
var foo = getCurrency('Albanien');
// alerts 'Albania'
alert(foo.translate);
var bar = getCurrency('Albania');
alert(bar.translate);
// undefined, should output 'Albanien' and all the object properties (info, code)
答案 0 :(得分:3)
你快到了那里:
for (var key in currency) {
if(currency[key].translate == country) {
return currency[key];
}
}
此外,您应该从文字中删除currData =
;它只是创建一个全局变量,而不是名为currData
的属性。
要同时返回国家/地区名称,我建议您返回一个包含它的新对象:
function getCurrency(country) {
var currency = {
'Förenade Arabemiraten' : currData = {
'code' : 'AED',
'info' : 'Dirham',
'translate' : 'United Arab Emirates'
},
'Afghanistan' : currData = {
'code' : 'AFN',
'info' : 'Afghani',
'translate' : 'Afghanistan'
},
'Albanien' : currData = {
'code' : 'ALL',
'info' : 'Lek',
'translate' : 'Albania'
}
};
if(currency[country] !== undefined) {
return {
country: country,
countryData : currency[country]
};
} else {
for (var key in currency) {
if(currency[key].translate == country) {
return {
country: key,
countryData : currency[key]
};
}
}
}
}
var foo = getCurrency('Albanien');
// alerts 'Albanien'
alert(foo.country);
// alerts 'Albania'
alert(foo.data.translate);
var bar = getCurrency('Albania');
// alerts 'Albanien'
alert(bar.country);
// alerts 'Albania'
alert(bar.data.translate);