我写了一个简单的函数来访问下面数组中的一些值,数组中嵌套了多个对象。
我的问题与我的 2 个循环有关。我知道我必须首先循环遍历数组才能访问这 3 个对象,但为什么我必须循环遍历这 3 个对象才能访问这些值?
基本上,为什么我不能运行初始 for
循环并通过这样做访问声音:
animalNoises[i][animal][country]
上面的返回对我来说是未定义的。它与每 3 个动物对象的构造方式有关吗?
感谢您的帮助。我非常感谢堆栈溢出社区的不断帮助。
function petSounds(animal, country) {
let phrase = ''
for (let i = 0; i < animalNoises.length; i++) {
for (let key in animalNoises[i]){
if (animal === key){
let sound = animalNoises[i][key][country];
phrase = animal + 's' + ' in ' + country + ' say ' + sound
}
}
}
return phrase
}
let animalNoises = [
{ 'dog': {
'America' : 'Woof! Woof!',
'Germany' : 'Wau Wau!',
'England' : 'Bow wow!',
'Uruguay' : 'Jua jua!',
'Afrikaans' : 'Blaf!',
'Korea' : 'Mong mong!',
'Iceland' : 'Voff voff!',
'Albania' : 'Ham!',
'Algeria' : 'Ouaf ouaf!'
}
},
{ 'cat': {
'America' : 'Meow',
'Germany' : 'Miauw!',
'England' : 'mew mew',
'Uruguay' : 'Miau Miau!',
'Afrikaans' : 'Purr',
'Korea' : 'Nyaong!',
'Iceland' : 'Kurnau!',
'Albania' : 'Miau',
'Algeria' : 'Miaou!'
}
},
{ 'chicken': {
'America' : 'Cluck cluck',
'Germany' : 'tock tock tock',
'England' : 'Cluck Cluck',
'Uruguay' : 'gut gut gdak',
'Afrikaans' : 'kukeleku',
'Korea' : 'ko-ko-ko',
'Iceland' : 'Chuck-chuck!',
'Albania' : 'Kotkot',
'Algeria' : 'Cotcotcodet'
}
}
];
最佳答案
您需要更新您的 json 以简化函数(使用按动物类型键入的对象):
function petSounds(animal, country) {
const sound = animalNoises[animal][country];
const phrase = animal + 's' + ' in ' + country + ' say ' + sound;
return phrase;
}
let animalNoises = {
'dog': {
'America': 'Woof! Woof!',
'Germany': 'Wau Wau!',
'England': 'Bow wow!',
'Uruguay': 'Jua jua!',
'Afrikaans': 'Blaf!',
'Korea': 'Mong mong!',
'Iceland': 'Voff voff!',
'Albania': 'Ham!',
'Algeria': 'Ouaf ouaf!'
},
'cat': {
'America': 'Meow',
'Germany': 'Miauw!',
'England': 'mew mew',
'Uruguay': 'Miau Miau!',
'Afrikaans': 'Purr',
'Korea': 'Nyaong!',
'Iceland': 'Kurnau!',
'Albania': 'Miau',
'Algeria': 'Miaou!'
},
'chicken': {
'America': 'Cluck cluck',
'Germany': 'tock tock tock',
'England': 'Cluck Cluck',
'Uruguay': 'gut gut gdak',
'Afrikaans': 'kukeleku',
'Korea': 'ko-ko-ko',
'Iceland': 'Chuck-chuck!',
'Albania': 'Kotkot',
'Algeria': 'Cotcotcodet'
}
};
console.log(petSounds('cat', 'America'));
console.log(petSounds('dog', 'Iceland'));
console.log(petSounds('chicken', 'Germany'));
关于javascript - 访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405590/