title: Create array of objects based on two another arrays of objects
body: <p>I went through SO to find the sulution but I failed...</p>
  <p>I have two arrays of objects and I want to create the third one based on them and add some new keys/values.</p>
  <p>Base Data</p>
  <pre><code>const oldArray = [
  {id: 1, name: 'Test', age: 25, skill: 120}, 
  {id: 2, name: 'Test25', age: 10, skill: 120}];
  </code></pre>
  <p>Data with some modifications</p>
  <pre><code>const newArray = [
  {id: 1, name: 'Test2', age: 50, skill: 200},
  {id: 2, name: 'Test25', age: 25, skill: 120}];
  </code></pre>
  <p>I would like to receive something like:</p>
  <pre><code>const expectedResultArray = [
    {id: 1, oldName: 'Test', newName: 'Test2', oldAge: 25, newAge: 50, ageDifference: 25, oldSkill: 120, newSkill: 200, skillDifference: 80 },
    {id: 2, oldName: 'Test25', newName:'Test25', oldAge: 10, newAge: 25, ageDifference: 15, oldSkill:120, newSkill: 120, skillDefference: 0}]
  </code></pre>
  <p>As You can see, the expected array is a combination of old and totally new calculations based on the two arrays. How can i achieve that ? I tried with <code>reduce()</code> however i got stuck trying:</p>
  <pre><code>var createNewArray = (...objects) =&gt; 
    Object.values(objects.reduce((a, e) =&gt; {
      a[e.id] = a[e.id] || {id: e.id};
    // struggling to proceed here 
  
      return a;
    }, {}))
  ;
  
  console.log(createNewArr(...oldArray, ...newArray));
  </code></pre>