2016-04-02 2 views
-2

私は、ほぼ同じ数のオブジェクトを含む配列を持っています。私はそれらの間で同じではないデータを保持しながら、これらのオブジェクトを1つにマージしたい。 2つのほぼ同じJavaScriptオブジェクトをLodashを使って1つにマージできますか?

[ 
    { id: 1, 
    title: 'The title', 
    description: 'The description', 
    categories: [ 
     {id: 1, name: 'Cat 1'} 
    ] 
    }, 
    { id: 1, 
    title: 'The title', 
    description: 'The description', 
    categories: [ 
     {id: 2, name: 'Cat 2'} 
    ] 
    } 
] 

は私が最終的な結果になりたい::

は、ここに私のデータです

[ 
    { id: 1, 
    title: 'The title', 
    description: 'The description', 
    categories: [ 
     {id: 1, name: 'Cat 1'}, 
     {id: 2, name: 'Cat 2'} 
    ] 
    } 
] 

任意の助けをいただければ幸いです!

+0

[ '_.mergeWith()']に指定された例を試してみてください(します。https:// lodash

だから、それは単なる例のため...だけでなく、次の配列に仕事ができます.com/docs#mergeWith)。 –

+0

Stackoverflowはデータと必要な結果を貼り付けて解決策を得るための場所ではありません。私たちはここであなたを考えないように助けます。 – Aristarhys

+0

「ほとんど同一」の定義は何ですか? –

答えて

0
var a1 = [ 
    { id: 1, 
    title: 'The title', 
    description: 'The description', 
    categories: [ 
     {id: 1, name: 'Cat 1'} 
    ] 
    }, 
    { id: 1, 
    title: 'The title', 
    description: 'The description', 
    categories: [ 
     {id: 2, name: 'Cat 2'} 
    ] 
    } 
]; 
var a2 = []; 

_.forEach(a1, function(item){ 
    if(a2.length === 0){ 
    a2.push(item); 
    }else{ 
    _.forIn(item, function(value, key){ 
     if(!a2[0].hasOwnProperty(key)){ 
     a2[0][key] = value; 
     }else{ 
      if(typeof value === "object" && value.length > 0){ 
      _.forEach(value, function(v){ 
        console.log("Pushing Item into Categories") 
        a2[0][key].push(v); 
      }) 
      } 
     } 
    }) 
    } 

}) 

console.log(a2) 

これは最もエレガントな解決策ではない、しかし、それは仕事を取得し、1つのオブジェクトの長さを有する配列に「A1」の任意の長さの配列を組み合わせて、その項目内にネストされた配列を結合します繰り返す。

var a1 = [ 
    { id: 1, 
    title: 'The title', 
    description: 'The description', 
    categories: [ 
     {id: 1, name: 'Cat 1'} 
    ], 
    franks: [ 
     {"blaH":"blah"} 
    ] 
    }, 
    { id: 1, 
    title: 'The title', 
    description: 'The description', 
    categories: [ 
     {id: 2, name: 'Cat 2'} 
    ] , 
    franks: [ 
     {"blaH":"blah1"} 
    ] 
    } , 
    { id: 1, 
    title: 'The title', 
    description: 'The description', 
    categories: [ 
     {id: 2, name: 'Cat 2'} 
    ] , 
    franks: [ 
     {"blaH":"blah2"}, 
     {"blaH":"blah3"} 
    ] 
    } 
]; 
+0

私はmergeWith、uniq、unionなどでさまざまな方法を試みましたが、それを取得しませんでした。これは完全に機能しました。助けてくれてありがとう、アーロン。 – kfleisch

関連する問題