真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript實現(xiàn)JSON合并操作示例【遞歸深度合并】

本文實例講述了JavaScript實現(xiàn)JSON合并操作。分享給大家供大家參考,具體如下:

成都創(chuàng)新互聯(lián)公司專注于安順網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供安順營銷型網(wǎng)站建設,安順網(wǎng)站制作、安順網(wǎng)頁設計、安順網(wǎng)站官網(wǎng)定制、微信小程序服務,打造安順網(wǎng)絡公司原創(chuàng)品牌,更為您提供安順網(wǎng)站排名全網(wǎng)營銷落地服務。

為什么我會想到寫這幾行代碼

在實際工作中,我們會使用許多或自主開發(fā)或第三方的工具,有些工具的配置文件相當細節(jié),使用頻率低倒也罷了,使用頻率高的話必然造成很多代碼冗余。所以我都會對這些工具做二次封裝,把不經(jīng)常改動的配置給予默認值。如果需要改動,傳入新的配置覆蓋原來的配置即可。

起初我以為這是一項很簡單的需求

var json1 = {  // 固定的配置
 a: 1,
 b: 2,
 c: 3,
}
var json2 = {  // 作為參數(shù)傳入的配置
 a: 11,
 d: 14,
}
json3 = {  // 合并后的結果
 a: 11,
 b: 2,
 c: 3,
 d: 14,
}

如上述,確實很簡單??墒聦嵤牵斉渲貌辉偈莾H僅一層嵌套時,常用的合并如$.extendfor in 賦值就不再能再解決問題了

var json1 = {
 a: 1,
 b: {
  b1: 'hello',
  b2: 'world',
 },
}
var json2 = {
 b: { b2: 'china' },
 c: 3,
}
json3 = {  // 合并后的結果
 a: 1,
 b: { b2: 'chila' },
 c: 3,
}

可以看出,我們的本意是希望json2里的b.b2: 'china'取代json1里的b.b2: 'world', 可是實際上,常規(guī)的結果只會把整個object/json取代,而不會去遍歷其中的屬性,在本例中導致了b.b1的丟失。

于是就有了如下幾行代碼:

// 遇到相同元素級屬性,以后者(main)為準
// 不返還新Object,而是main改變
function mergeJSON (minor, main) {
 for (var key in minor) {
  if (main[key] === undefined) { // 不沖突的,直接賦值
   main[key] = minor[key];
   continue;
  }
  // 沖突了,如果是Object,看看有么有不沖突的屬性
  // 不是Object 則以main為主,忽略即可。故不需要else
  if (isJSON(minor[key])) {
   // arguments.callee 遞歸調用,并且與函數(shù)名解耦
   arguments.callee(minor[key], main[key]);
  }
 }
}
// 附上工具
function isJSON(target) {
 return typeof target == "object" && target.constructor == Object;
}

雖然只有十幾行的代碼,但還是挺實用。粗略的挖掘了一下搜索引擎,好像并沒有更合適解決問題的代碼。簡單的遞歸思想和argument.callee琢磨一下也是有些味道的

PS:這里再為大家推薦幾款相關的json在線工具供大家參考:

在線JSON代碼檢驗、檢驗、美化、格式化工具:
http://tools.jb51.net/code/json

JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat

在線XML/JSON互相轉換工具:
http://tools.jb51.net/code/xmljson

json代碼在線格式化/美化/壓縮/編輯/轉換工具:
http://tools.jb51.net/code/jsoncodeformat

在線json壓縮/轉義工具:
http://tools.jb51.net/code/json_yasuo_trans

更多關于JavaScript相關內容可查看本站專題:《JavaScript中json操作技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數(shù)學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。


文章題目:JavaScript實現(xiàn)JSON合并操作示例【遞歸深度合并】
URL鏈接:http://weahome.cn/article/iigcdc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部