关联数组/对象 - 使用点表示法获取值

xga*_*arb 3 javascript arrays associative

我真的不明白为什么这不起作用:

thing = {
img78:{ exifmanufacturer:"Canon", exifmodel:"Canon EOS 450D", exifexposuretime:"1/125", exiffstop:"71/10", exifiso:"200"},
img79:{ exifmanufacturer:"Canon", exifmodel:"Canon EOS 550D", exifexposuretime:"1/125", exiffstop:"71/10", exifiso:"100"},
img80:{ exifmanufacturer:"Canon", exifmodel:"Canon EOS 550D", exifexposuretime:"1/30", exiffstop:"16/1", exifiso:"250"},
img81:{ exifmanufacturer:"NIKON CORPORATION", exifmodel:"NIKON D700", exifexposuretime:"10/600", exiffstop:"71/10", exifiso:"800"},
img82:{ exifmanufacturer:"NIKON CORPORATION", exifmodel:"NIKON D700", exifexposuretime:"10/2500", exiffstop:"90/10", exifiso:"800"},
img83:{ exifmanufacturer:"NIKON CORPORATION", exifmodel:"NIKON D700", exifexposuretime:"10/600", exiffstop:"71/10", exifiso:"800"},
img77:{ exifmanufacturer:"Canon", exifmodel:"Canon EOS 450D", exifexposuretime:"1/160", exiffstop:"8/1", exifiso:"100"},
img69:{ exifmanufacturer:"NIKON CORPORATION", exifmodel:"NIKON D700", exifexposuretime:"10/600", exiffstop:"71/10", exifiso:"800"}
}; 

var imageid = 'img80';

console.log('myVar1: ', thing.img80.exifmodel);
console.log('myVar2: ', thing.imageid.exifmodel);
Run Code Online (Sandbox Code Playgroud)

输出:

myVar1: Canon EOS 550D
thing.imageid is undefined
Run Code Online (Sandbox Code Playgroud)

我原本以为它会反过来.

Nic*_*ver 7

您需要使用[]符号略微区别地访问它,如下所示:

console.log('myVar2: ', thing[imageid].exifmodel);
Run Code Online (Sandbox Code Playgroud)

在JavaScript中,这些是等价的:

obj.Property
obj["Property"]
Run Code Online (Sandbox Code Playgroud)

或者像你的情况一样:

var prop = "Property";
obj[prop];
Run Code Online (Sandbox Code Playgroud)