JavaScriptを初めて使い、2つのJSONオブジェクトの違いを見つけようとしています。 JSONオブジェクトの構造とそのデータを以下に示します。私は通常のJSONオブジェクトのために動作するコードをオンラインにしていますが、これもデータの配列を持っているので、そのためにはうまくいかないと思います。私は別のものを試みたが、結果は得られなかった。あなたがこれについての指針を持っているなら、それは非常に高く評価されるでしょう。ありがとう。2つの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-suchthing-as-a-json/) – Andreas
'[オブジェクト配列]'をタイプとして返します。それを得るには、 'Object.prototype.toString.apply(obj)'をしなければなりません。配列をチェックしたい場合は 'Array 'を使います。isArray' – Rajesh
あなたができるならばアンダースコア(またはあなたが好む他のライブラリ)を使用することを検討してください。あなたの仕事がそれを発明しない限り、ホイールを発明する必要はありません – Tebe