2017-08-24 5 views
-3

JavaScript/Node.jsを使用して2つの配列をマッチングし、キー値をマッチングしてマージする必要があります。私は以下のコードを説明しています。Node.js/JavaScriptを使用してキー値で2つの配列の値をマージする方法

var userData=[{'email':'[email protected]','name':'Raj'},{'email':'[email protected]','name':'Rahul'}]; 
var userData1=[{'email':'[email protected]','address':'abcdf'},{'email':'[email protected]','address':'bbsr'}]; 

ここで私は2つの配列を有し、そしてIはemail値を照合することによって、両方の配列をマージする必要があると期待される出力は以下のようです。

var finalArr=[{'email':'[email protected]','name':'Raj','address':'abcdf'},{'email':'[email protected]','name':'Rahul','address':'bbsr'}]; 
+0

が重複する可能性を確認することができますunderscore

var mergedArray = _.map(userData, function(element){ let findItem = _.findWhere(userData1, {email: element.email}) return _.extend(element, findItem); }); 

を使用することによってそれを行うことができます[2つのJavaScriptでの配列とデ - 重複するアイテムをマージする方法](https://stackoverflow.com/questions/1584370/how-to-merge-two-arrays-in-javascript-and-duplicate-items) – mscheker

+0

アレイの1つにエントリがあり、もう一方に対応するエントリがない場合はどうなりますか? – nnnnnn

答えて

1
var finalArr = []; 
userData.map(item => { 
    userData1.map(item1 => { 
    if (item.email === item1.email) { 
     finalArr.push(Object.assign(item, item1)); 
    } 
    }) 
}) 

それはあなたがyouself次回を考える必要があり、そう難しいことではありません。

+1

'if(item.email === item1.emal){...}' – smac89

+0

あなたは '.map()'メソッドを悪用しようとしています。反復したいだけなら '.forEach()'を使います。実際にマップする場合は '.map()'を使い、コールバックが値を返し、 '.map()'の戻り値が使用されていることを確認してください。 – nnnnnn

+0

@nnnnnn - '.map'が' .forEach'よりもはるかに高速であると思われるベンチマークがあります - これは非常に多くのコード例が '.map'を悪用する理由です。 –

関連する問題