簡體   English   中英

如何將對象附加到Javascript JSON對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM