Reputation: 105
I need to transform the below array of objects into a modified array of object
obj = [{
org_id: 'CLTINTGBK0001',
rate: 8,
qty: 500,
total_rate: 35000
},
{
org_id: 'CLTINTGBK0001',
rate: 7,
qty: 800,
total_rate: 38000
}
]
Goal:
obj = [ {
org_id: 'CLTINTGBK0001',
"qty": [
{
"qty": 500,
"rate":8
}
],
total_rate: 38000
},
{
org_id: 'CLTINTGBK0001',
"qty": [
{
"qty": 800,
"rate":7
}
],
total_rate: 38000
}
]
I have the below code however it's not working. I am trying to loop the array of obect and created different array and object and push object to array and add the array to each object of array.
let obj1 = {}
let qrty
let qty = []
for (let i = 0; i < arr.length; i++) {
qrt1 = arr[i].qty
rate1 = arr[i].rate
console.log(qrty)
obj1.qty = qrt1;
obj1.rate = rate1;
qty.push(obj1);
arr[i].qty = qty
console.log('arr', arr)
}
Upvotes: 0
Views: 54
Reputation: 4419
You can do this using Array#map
and Destructuring Assignment
:
const obj = [
{ org_id: 'CLTINTGBK0001', rate: 8, qty: 500, total_rate: 35000 },
{ org_id: 'CLTINTGBK0001', rate: 7, qty: 800, total_rate: 38000 },
];
let res = obj.map(({ qty, rate, ...rest }) => ({
...rest,
qty: [{ qty, rate }],
}));
console.log(res);
Upvotes: 2
Reputation: 1789
You can do:
const obj = [{
org_id: 'CLTINTGBK0001',
rate: 8,
qty: 500,
total_rate: 35000
},
{
org_id: 'CLTINTGBK0001',
rate: 7,
qty: 800,
total_rate: 38000
}
]
var newObject = []
obj.forEach(element => {
var newElem = {}
for (const [key, value] of Object.entries(element)){
if(key == 'qty'){
newElem[key]= {
qty: element['qty'],
rate: element['rate'],
}
}else if (key == 'rate'){
continue
}else{
newElem[key] = value
}
}
newObject.push(newElem)
});
console.log(newObject)
Upvotes: 2
Reputation: 20354
You can do it like this:
let obj = [
{ org_id: 'CLTINTGBK0001', rate: 8, qty: 500, total_rate: 35000 },
{ org_id: 'CLTINTGBK0001', rate: 7, qty: 800, total_rate: 38000 }
];
obj = obj.map((item)=> {
return {
org_id: item.org_id,
total_rate: item.total_rate,
qty:[ { qty: item.qty, rate:item.rate } ]
}
});
console.log(obj);
Upvotes: 0