Home > Mobile >  2 Array combine into one array javascript
2 Array combine into one array javascript

Time:10-07

here is two array one is firstName another is lastName

   {
    firstName: [ 'name1', 'name2' ],
    lastName: [ 'last1', 'last2' ],
   }

but I want to formate the data into one array like this.

 {
    "name": [
        {
          "firstName": "name1",
          "lastName": "last1"
        },
        {
          "firstName": "name2",
          "lastName": "last2"
        },
        
      ]
  }

CodePudding user response:

Using Array#reduce:

const getNameObj = (data = {}) => {
  const { firstName = [], lastName = [] } = data;
  if(firstName.length !== lastName.length) return;
  const name = firstName.reduce((arr, fn, i) => ([
    ...arr,
    { firstName: fn, lastName: lastName[i] }
  ]), []);
  return { name };
};

console.log( 
  getNameObj({ firstName: [ 'name1', 'name2' ], lastName: [ 'last1', 'last2' ] })
);

CodePudding user response:

You could loop through it using for...in and push each element inside new array like this example

const data = {
 firstName: [ 'name1', 'name2' ],
 lastName: [ 'last1', 'last2' ],
}

let newData = [];

for (let el in data.firstName){
  newData.push({
    firstName: data.firstName[el],
    lastName: data.lastName[el],
  })  
}

console.log(newData)

CodePudding user response:

You can use Array.reduce to get the result.

const input = {
    firstName: [ 'name1', 'name2' ],
    lastName: [ 'last1', 'last2' ],
};

const result = input.firstName.reduce((acc, firstName, index) => {
   acc.name.push({
     firstName: firstName,
     lastName: input.lastName[index]
   })
   return acc
}, {'name': []})

console.log(result);

  • Related