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);