3

なぜこれが機能しないのか、私にはよくわかりません。

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);

出力:

myVar1: Canon EOS 550D
thing.imageid is undefined

逆だと思っていたでしょう。

4

3 に答える 3

7

[]次のように、表記を使用して少し異なる方法でアクセスする必要があります。

console.log('myVar2: ', thing[imageid].exifmodel);

JavaScriptでは、これらは同等です。

obj.Property
obj["Property"]

またはあなたの場合のように:

var prop = "Property";
obj[prop];
于 2010-08-03T19:56:00.777 に答える
0

2番目の例では、これは違法なthing.'img80'.exifmodelを書くようなものです。文字列を使用してオブジェクトのフィールドにアクセスする場合は、thing[imageid].exifmodelを実行する必要があります。

于 2010-08-03T19:57:29.103 に答える
0

このような文字列にインデックスがある場合、値にアクセスするには角かっこ表記を使用する必要があります。

var imageid = 'img80';
console.log('myVar2: ', thing[imageid].exifmodel);

または、常に評価(または、この方法をどの程度悪いと考えるかによっては悪)のルートを取ることができます。

eval("console.log('myVar2: '), thing." + imageid + ".exifmodel)");
于 2010-08-03T19:58:08.310 に答える