首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript 合併 JSON 對象與數組:構建巢狀數據結構的簡潔方法

     編輯:程式設計疑難解答

JavaScript 合併 JSON 對象與數組:構建巢狀數據結構的簡潔方法

需求:將獨立的對象 jsondata 與數組 arr 合併為包含 baby 字段的巢狀對象。

最簡單方案:直接屬性賦值

var jsondata = {"name":"圖圖","provice":"340000","city":"341200","district":"341226","sex":1,"job":"01000"};
var arr = [{birth:"2016-04-07",id:"2",sex:"2"}, {birth:"2016-04-07",id:"2",sex:"2"}];

jsondata.baby = arr; // 一行完成合併

console.log(JSON.stringify(jsondata, null, 2));
/* 輸出:
{
  "name": "圖圖",
  "provice": "340000",
  "city": "341200",
  "district": "341226",
  "sex": 1,
  "job": "01000",
  "baby": [
    {"birth":"2016-04-07","id":"2","sex":"2"},
    {"birth":"2016-04-07","id":"2","sex":"2"}
  ]
}
*/

進階:深拷貝避免引用污染

若後續需修改 arr 但不影響 jsondata,需深拷貝:

jsondata.baby = JSON.parse(JSON.stringify(arr));
// 或使用 lodash: _.cloneDeep(arr)
// 或 ES6 結構化克隆: structuredClone(arr) (現代瀏覽器支持)

動態構建(字段名不固定)

function merge(parent, childKey, childArray) {
    return Object.assign({}, parent, {[childKey]: childArray});
}
var result = merge(jsondata, 'baby', arr);

JavaScript 物件屬性動態增刪極其靈活,合併數據結構往往只需一條賦值語句。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved