-1

This is hard to articulate but hopefully I make sense. Imagine you have an array like so:

  firstArray: [
    {
      firstName: '',
      age: null,
      gender: null,
      preferences: []
    }
  ],

And you would like to update this array with the contents of another (without overriding any of the keys), such as:

const arrayToPushToFirstArray = [{
     age: 1,
     firstName: "Billy"
     gender: "girl"
    },
    {
     age: 2
     firstName: "Daniel"
     gender: "boy"
    }]

And so that firstArray looks like:

const firstArray = [{
     age: 1
     firstName: "Billy"
     gender: "girl"
     preferences: []
    },
    {
     age: 2
     firstName: "Daniel"
     gender: "boy"
     preferences: [],
    }]

How would I achieve this?

a7dc
  • 3,323
  • 7
  • 32
  • 50

1 Answers1

1

You need to extend the array like in JavaScript equivalent of jQuery's extend method

Your example will be like this https://jsfiddle.net/06mwgqsf/

var firstArray = [{
  firstName: '',
  age: null,
  gender: null,
  preferences: []
}];

var arrayToPushToFirstArray = [{
    age: 1,
    firstName: "Billy",
    gender: "girl"
  },
  {
    age: 2,
    firstName: "Daniel",
    gender: "boy"
  }
];

function extend() {
  for (var i = 1; i < arguments.length; i++)
    for (var key in arguments[i])
      if (arguments[i].hasOwnProperty(key))
        arguments[0][key] = arguments[i][key];
  return arguments[0];
}

var mask = firstArray[0];
var tmpArray = [];

for (var x = 0; x < arrayToPushToFirstArray.length; x++) {
  var tmpObj = extend({}, mask, arrayToPushToFirstArray[x]);
  tmpArray.push(tmpObj);
}

firstArray = tmpArray;
Jairo Correa
  • 636
  • 5
  • 8