2017-08-26 12 views
1

JavaScriptを使用してキー値ごとに2つのjsonデータ配列をマップできませんでした。私は以下のコードを説明しています。JavaScript/Node.jsを使用して2つの配列をマップできません

var userdata=[{'email':'[email protected]','name':'Rajj'},{'email':'[email protected]','name':'Rajesh'}]; 
     var userdata1=[{'email':'[email protected]','address':'rasukgarh'}]; 
     var finalArr=[]; 
     userdata.map(item => { 
       userdata1.map(item1 => { 
       if(item.email==item1.email){ 
        finalArr.push(Object.assign(item, item1)); 
       }else{ 
        finalArr.push(Object.assign(item, item1)); 
       } 
       }) 
      }) 
      console.log('all Data',finalArr); 
     } 

ここに私の要件は、同じ電子メールIDが両方の配列に存在するならば、二番目の配列の追加データが最初のものとマージされますです。 1番目の配列に何らかのデータがあり、email valueに基づいて2番目の配列内にデータが存在しない場合、最初の配列データだけが結果配列にプッシュされます。ここに私の期待される出力があります。

finalArr=[{'email':'[email protected]','name':'Rajj','address':'rasukgarh'},{'email':'[email protected]','name':'Rajesh'}] 

しかし、私の場合、私はこのようになることはできませんでした。

+0

また削除 '他{finalArr.push(Object.assign(項目、ITEM1));};' –

+0

それから値が一致するだけです。 – satya

+0

Ohあなたは何を意味するのですか –

答えて

2

map()を使用して新しい配列を作成し、find()を使用して2番目の配列に同じ電子メールのオブジェクトを見つけ、Object.assign()を使用してオブジェクトのコピーを作成し、2番目の配列からオブジェクトを割り当てることができます。

var userdata=[{'email':'[email protected]','name':'Rajj'},{'email':'[email protected]','name':'Rajesh'}]; 
 
var userdata1=[{'email':'[email protected]','address':'rasukgarh'}] 
 

 
var result = userdata.map(function(e) { 
 
    var find = userdata1.find(a => a.email == e.email); 
 
    return Object.assign({}, e, find) 
 
}) 
 

 
console.log(result)

1

var userdata = [{ 'email': '[email protected]', 'name': 'Rajj' }, { 'email': '[email protected]', 'name': 'Rajesh' }]; 
 
    var userdata1 = [{ 'email': '[email protected]', 'address': 'rasukgarh' }]; 
 
    userdata.map(function(item) { 
 
     userdata1.map(function(item1) { 
 
      if (item.email == item1.email) { 
 
       // modify the original userdata array item 
 
       Object.assign(item, item1); 
 
      } 
 
     }) 
 
    }) 
 
    console.log(userdata);

関連する問題