Want to create one array from another array of objects as below using javascript. arr is the input array and it should output as outArr
Input Array:
var arr = [
{name: 'A', flag: 0},
{email: 'B', flag: 0},
{address: 'C', flag: 0},
{name: 'A1', flag: 1},
{email: 'B1', flag: 1},
{address: 'C1', flag: 1}
]
Output Array:
var outArr = [
{
name: 'A',
email: 'B',
address: 'C'
},
{
name: 'A1',
email: 'B1',
address: 'C1'
}
]
You could get the rest of the object and add it to an object of the result array with the flag as index.
var array = [{ name: 'A', flag: 0 }, { email: 'B', flag: 0 }, { address: 'C', flag: 0 }, { name: 'A1', flag: 1 }, { email: 'B1', flag: 1 }, { address: 'C1', flag: 1 }],
result = array.reduce((r, { flag, ...o }) => {
Object.assign(r[flag] = r[flag] || {}, o);
return r;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }