我有以下对象:
{{1}}
我的代码将始终将 abbr 存储在一个变量中,这可以根据用户选择进行更改。我想要实现的是,如果我知道 abbr,即如果我知道 abbr 等于 abbr3,我想要得到 somestring3。
答案 0 :(得分:0)
你不能这样做,在对象内部有相同的键,覆盖前一个
const object1 = {
language: 'some_string1', abbr: 'abbr1',
language: 'some_string2', abbr: 'abbr2',
language: 'some_string3', abbr: 'abbr3',
language: 'some_string4', abbr: 'abbr4',
};
for(key in object1) {
console.log(key, object1[key]);
}
我建议你使用嵌套对象
const object1 = {
observation1: { language: "some_string1", abbr: "abbr1" },
observation2: { language: "some_string2", abbr: "abbr2" },
observation3: { language: "some_string3", abbr: "abbr3" },
observation4: { language: "some_string4", abbr: "abbr4" },
};
for (named_observation in object1) {
observation = object1[named_observation];
for (key in observation) {
console.log(named_observation, key, observation[key]);
}
}
答案 1 :(得分:0)
如果您有一个同时包含 language
和 abbr
的对象数组,您可以使用 Array.find:
const arr = [
{language: 'somestring1', abbr: 'abbr1'},
{language: 'somestring2', abbr: 'abbr2'},
{language: 'somestring3', abbr: 'abbr3'},
{language: 'somestring4', abbr: 'abbr4'}
];
const knownAbbr = 'abbr3';
const correspondingLang = arr.find(obj => obj.abbr === knownAbbr)?.language;
console.log(correspondingLang);
答案 2 :(得分:0)
首先,我假设你有一个对象数组,因为 JS 对象不能保存同一个键的多个属性。我建议使用一组对象。在这种情况下,解决方案将是这样的:
const object1 = [
{ language: 'somestring1', abbr: 'abbr1' },
{ language: 'somestring2', abbr: 'abbr2' },
{ language: 'somestring3', abbr: 'abbr3' },
{ language: 'somestring4', abbr: 'abbr4' },
]
function getLangByAbbr (langList, abbr) {
const lang = langList.find(lang => lang.abbr === abbr)
return lang?.language
}
console.log(getLangByAbbr(object1, 'abbr2')) // 'somestring2'
console.log(getLangByAbbr(object1, 'abbr4')) // 'somestring4'
console.log(getLangByAbbr(object1, 'abbr9')) // undefined