[英]How to append an object to a Javascript JSON object
如何將對象附加到Javascript JSON對象
我有一個javascript對象,它包含一個對象數組形式的JSON,例如:
columnDefs: [
{ name: 'Report', field: 'RPT', width: 80 },
{ name: 'Element', field: 'ELEM', width: 200 },
...
]
我需要補充一下
cellClass: myFunction
在columnDefs對象數組中的每個列def,所以它就像:
columnDefs: [
{ name: 'Report', field: 'RPT', width: 80, cellClass: myFunction },
{ name: 'Element', field: 'ELEM', width: 200, cellClass: myFunction },
...
]
請注意,myFunction不應該用引號括起來。 由於每列def是一個對象,而不是一個數組,我知道我需要先將它轉換為一個數組才能添加任何內容:
var keys = Object.keys( columnDefs );
for( var key in keys ) {
var col = columnDefs[key]
var colArray = [];
colArray.push( JSON.parse( JSON.stringify( col )));
colArray.push( { cellClass: myFunction } );
colDefs[key] = colArray;
}
但是,上面的代碼生成以下內容,而不是所需的內容:
[ { name: 'Report', field: 'RPT', width: 80 }, { cellClass: myFunction } ]
必須有一個更簡單,更好的方法來做到這一點?
嘗試:
columnDefs.forEach(function(obj) {
obj.cellClass = myFunction;
});
你可能會誤導關於什么in
呢:它已經遍歷一個對象(或數組的索引)的關鍵。
你想要的是解析你的json字符串一次,在循環中改變它,然后重新序列化它:
var json = "...."; // your json input
var columnDefs = JSON.parse(json);
for (var i in columnDefs) { // columnDefs is an array, i the index
var row = columnDefs[i]; // index into columnDefs to get the object
row.cellClass = myFn(row);
}
var newJson = JSON.stringify(columnDefs); // your json output – skip this step if not needed
var keys = Object.keys( columnDefs );
keys.forEach(function(item){
var col = columnDefs[item]
col['cellClass'] = myFunction
}
地圖是你需要的嗎? Map基於轉換舊數組返回一個新數組。
var arr = [
{ name: 'Report', field: 'RPT', width: 80 },
{ name: 'Element', field: 'ELEM', width: 200 }
].map(function(element) {
element.cellClass = myFunction;
return element;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.