2016-12-19 15 views
-2
var A = [{ 
    id: 1, 
    name: "Apple" 
}, { 
    id: 2, 
    name: "Orange" 
}, { 
    id: 3, 
    name: "Mango" 
}]; 

var B = [{ 
    id: 1, 
    name: "Apple" 
}, { 
    id: 3, 
    name: "Mango" 
}, { 
    id: 4, 
    name: "Berry" 
}]; 

オブジェクトを追加したいと思います。 [{ id: 4, name: "Berry" }
オブジェクトを削除します。 [{ id: 2, name: "Orange" }]
配列オブジェクトからオブジェクトを削除し、オブジェクトを削除しました

これを行う最も簡単な方法を教えてください。私は配列の違いを試してみましたが、大丈夫ですが、コードが複雑すぎます。ありがとう。

+0

、それを自分で試してみてください、それが動作しない場合は、[MCVE]提供。 –

+0

配列の相違を決定する方法に関するいくつかの基礎的な研究は、少なくとも出発点を得るはずです。これはコード作成サービスではなく、あなた自身の問題を解決するためのあなた自身の試みを示すことが期待されます。したがって、あなたが言うコードを投稿するのは複雑です。これはまた、[ask] – charlietfl

+0

を読むのに良い時期になるでしょう。私の意図ではありません。 underscore.jsのような基本的なユーティリティやそれを行うための他の既成の関数があるかのように私は意味します。 –

答えて

-1

オブジェクトの比較を行うには、私が今考えている最も簡単な方法は 'ストリング'です。

var A = [{ id: 1, name: "Apple" }, { id: 2, name: "Orange" }, { id: 3, name: "Mango"}]; 
 
var B = [{ id: 1, name: "Apple" }, { id: 3, name: "Mango" }, { id: 4, name: "Berry" }]; 
 

 

 
var strA = A.map(function(item){return JSON.stringify(item);}) 
 
var strB = B.map(function(item){return JSON.stringify(item);}) 
 

 
var addedObjs = strB 
 
        .filter((item) => strA.indexOf(item) < 0) 
 
        .map((item) => JSON.parse(item)); 
 

 
var removedObjs = strA 
 
        .filter((item) => strB.indexOf(item) < 0) 
 
        .map((item) => JSON.parse(item)); 
 

 

 
console.log(addedObjs); 
 
console.log(removedObjs);

+0

ありがとうございます。それが私が探しているものです。私はそれを得るために組合、交差点、そして差別を使いました。私はノブです。 :D –

+0

プロパティの順序がAとBで異なる場合、これは失敗します。 –

+0

@torazaburoはい、そうです。だから、より良い解決策は、それを '文字列化'するのではなく、プロパティの値を再帰的に比較することです。 – kevguy

関連する問題