2015-10-05 116 views
1

我有2個JSON對象默認實際,它們可以是NESTED。我想寫一個javascript算法來比較和交換默認值和實際值之間的值。但我堅持,只有能夠處理JSON默認和實際響應之間的差異和交換JSON值

這裏的最外層是例如:

默認:

{ 
    username : "string", 
    phone : null, 
    school : "string", 
    GPA  : { 
    major : null, 
    minor : null 
    } 
} 

實際:

{ 
    username : "David", 
    phone : 12345, 
    school : "Harvard", 
    password : "[email protected]" 
    GPA  : { 
    major : 3.9 
    } 
}  
的差異後

和交換價值的結果應該是:

{ 
    username : "David", 
    phone : 12345, 
    school : "Harvard", 
    GPA  : { 
     major : 3.9, 
     mimor : null 
    } 
} 

這個想法是有默認的模型,如果響應具有額外的屬性,如密碼,算法應該刪除這樣的屬性。

另一方面,如果響應沒有require屬性,算法應該填入默認值。

所以最終結果應該只包含在默認模型中定義的鍵,並且值將來自響應,如果一個鍵不存在使用默認鍵值對。

回答

1

如果您可以使用jQuery,那麼可以使用$ .extend()來完成此操作。

var def = { 
    username : "string", 
    phone : null, 
    school : "string", 
    GPA  : { 
    major : null, 
    minor : null 
    } 
} 

var actual = { 
    username : "David", 
    phone : 12345, 
    school : "Harvard", 
    password : "[email protected]", 
    GPA  : { 
    major : 3.9 
    } 
} 

var extended = $.extend(true, {}, def, actual); 

這是一個jsfiddle,應該證明這一點。 https://jsfiddle.net/38L808y1/

+0

這是一個很好的答案,但密碼仍然在結果中,並且我在Node服務器上處理這個,所以jquery不是一個選項 – LanNguyen