2016-08-16 11 views
2

動的属性名を持つ配列内でオブジェクトをプッシュしようとしています。JSONオブジェクトを要素名として値を使用してプッシュする

のは、我々は次の変数は例が動作していない

myJSON = {"students" : [ {"name":"Your Name"}, {"name":"My Name"} ] }; 

attribName = "name"; 

myValue = "myValue"; 

parsedJSON = JSON.parse(myJSON); 

parsedJSON["students"].push({attribName : myValue}); 

myJSON = JSON.stringfy(parsedJSON); 

定義されているとしましょう。動的属性名を持つオブジェクトをプッシュする方法はありますか?

+1

これは疑問ではありません – Jonathan

答えて

5

オブジェクトのプロパティ名

MDN

からは、任意の有効なJavaScriptの文字列、または空の文字列を含む、文字列に変換することができます何もすることができます。ただし、有効なJavaScript識別子ではないプロパティ名(たとえば、空白またはハイフンを含むプロパティ名、または数字で始まるプロパティ名)は、square bracket notationを使用してのみアクセスできます。この表記は、プロパティ名を動的に決定する場合(プロパティ名が実行時まで決定されない場合)にも非常に便利です。

はまた、あなたが、あなたのコード内で変更を行うことができないjson

var myJSON = { 
 
    "students": [{ 
 
    "name": "Your Name" 
 
    }, { 
 
    "name": "My Name" 
 
    }] 
 
}; 
 

 
var attribName = "name"; 
 

 
var myValue = "myValue"; 
 

 
var obj = {}; 
 
obj[attribName] = myValue; 
 
myJSON["students"].push(obj); 
 
console.log(myJSON);

2
function(key, value, json) { 

    var obj = {}; 
    obj[key] = value; 
    json['students'].push(obj); 

    return arr; 
} 
+0

動的であると思っている場合は、キー(「生徒」)も動的にしておいてください。 – Rayon

+0

はい、それはよりダイナミックになります。 –

0

、あなたが提供している入力がobjectであることに注意してください:

myJSON = {"students" : [ {"name":"Your Name"}, {"name":"My Name"} ] }; 

attribName = "name"; 

myValue = "myValue123"; 

myJSON["students"].push({attribName: myValue}); 

console.log(myJSON); 
関連する問題