2017-08-11 7 views
-2

Javaスクリプトでは、jsonからキーの値を取得する必要があります。しかし、もし私がキーのオブジェクトドット名を与えると、それを得ることができます。Javaスクリプトでキーの値を取得する(キー名を変数に格納して使用する)

<script> 
var text = '{"employees":[' + 
'{"firstName":"John","lastName":"Doe" },' + 
'{"firstName":"Anna","lastName":"Smith" },' + 
'{"firstName":"Peter","lastName":"Jones" }]}'; 

obj = JSON.parse(text); 
document.getElementById("demo").innerHTML = 
obj.employees[1].firstname + " " + obj.employees[1].lastName; 
</script> 

しかし、私は、変数内のキーの名前を格納し、キーの値を取得するためにそれを使用する場合、それは私のために働いていません。

<script> 
var text = '{"employees":[' + 
'{"firstName":"John","lastName":"Doe" },' + 
'{"firstName":"Anna","lastName":"Smith" },' + 
'{"firstName":"Peter","lastName":"Jones" }]}'; 

obj = JSON.parse(text); 
fn="firstname"; 
ln="lastname"; 
document.getElementById("demo").innerHTML = 
obj.employees[1].fn + " " + obj.employees[1].ln; 
</script> 

私はそれは、FNおよびLNとキーを探している問題を理解することができます。誰も私にどのようにキーの名前が格納されている変数を使用してキーの値を取得することができます私を説明することができます。

+0

obj.employees[0][fn]; 
この場合の値にアクセスするために使用するブラケット表記https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors – Manish

+0

これは 'firstName'としないでなければなりません'firstname'。 「n」は大文字であることに注意してください –

答えて

0

私はあなたのコードが正しく実行されない理由について、もう少し詳しく説明したいと考えました。これは、JavaScriptがドット表記の後に来るものを解釈する方法のためです。この場合

fn="firstName"; 
obj.employees[1].fn; 

JavaScriptがfnは変数の名前であるにもかかわらず、 "FN" と呼ばれるOBJのプロパティを探しているので、obj.employeesは、[1]の.Fn、undefinedを返すでしょう。しかし、ブラケット表記を使用すると、変数に格納されている文字列を「アンボックス」し、そのキーを使用してプロパティキーを取得します。他の答えと同様に、動的変数を持つキーを取得する適切な方法は、ブラケット表記を使用することです。

2

var obj = JSON.parse('{"employees":[' + 
 
'{"firstName":"John","lastName":"Doe" },' + 
 
'{"firstName":"Anna","lastName":"Smith" },' + 
 
'{"firstName":"Peter","lastName":"Jones" }]}') 
 

 
var fn = "firstName"; 
 
var ln = "lastName"; 
 

 
console.log(obj.employees[0][fn]); 
 
console.log(obj.employees[0][ln]);

彼らは、このようにアクセスすることができます。

firstname = obj.employees[1][fn] 
lastname = obj.employees[1][ln] 
関連する問題