我是JavaScript新手,試圖找出兩個JSON對象之間的區別。 JSON對象的結構及其數據如下所示。我在線獲得了一個適用於普通JSON對象的代碼,但由於它也有一組數據,我認爲它不適用於此。我嘗試了不同的東西,但沒有結果。如果你有這方面的指針,將不勝感激。謝謝。比較兩個JSON對象,只返回另一個JSON對象,只做更改
JSON對象1(OBJ1):{id: 1, details: Array[2], profession: "Business"}
{
"id": "1",
"details": [{
"name": "Peter",
"address": "Arizona",
"phone": 9900998899
},
{
"name": "Jam",
"address": "Kentucky",
"phone": 56034033343
}
],
"profession": "Business"
}
JSON對象2(OBJ2):{id: 2, details: Array[2], profession: "Business"}
{
"id": "2",
"details": [{
"name": "Peter",
"address": "Arizona",
"phone": 9900998899
},
{
"name": "David",
"address": "Boston",
"phone": 434323434
}
],
"profession": "Business"
}
解決方案:
compare(obj1, obj2) {
var result = {};
for (key in obj1) {
if (obj2[key] != obj1[key]) {
result[key] = obj2[key];
}
if (typeof obj2[key] === '[object Array]' && typeof obj1[key] === '[object Array]') {
result[key] = compare(obj1[key], obj2[key]);
}
if (typeof obj2[key] === 'object' && typeof obj1[key] === 'object') {
result[key] = compare(obj1[key], obj2[key]);
}
}
console.log(result);
}
結果:
Object {0: undefined, 1: undefined}
Object {id: "2", pingedAddresses: undefined, type: "Business"}
預計:
{
"id": "2",
"details": [{
"name": "David",
"address": "Boston",
"phone": 434323434
}]
}
[有沒有這樣的事情作爲「JSON對象」](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – Andreas
你永遠不會得到'[object array]'作爲類型。要做到這一點,你必須做'Object.prototype.toString.apply(obj)'。另外如果你想檢查數組,使用'Array。isArray' – Rajesh
如果可以的話,考慮使用下劃線(或者你喜歡的任何其他庫),除非你的任務是發明它,否則不需要發明輪子 – Tebe