मान लीजिए हमारे पास निम्नलिखित JSON ऑब्जेक्ट है:
const input = {
"before": {
"device": [
{
"id": "1234",
"price": "10",
"features": [
{ "name": "samsung", "price": "10" },
{ "name": "Apple", "price": "20" }
]
},
{
"id": "2154",
"price": "20",
"features": [
{ "name": "samsung", "price": "30" },
{ "name": "Moto", "price": "40" }
]
}
]
},
"after": {
"device": [
{
"id": "1234",
"price": "50",
"features": [
{ "name": "samsung", "price": "20" },
{ "name": "Lenovo", "price": "30" }
]
},
{
"id": "2158",
"price": "40",
"features": [
{ "name": "samsung", "price": "30" }
]
}
]
}
};
हमारी आवश्यकता है कि यदि समान id before और after ऑब्जेक्ट में है तो id और उसके फीचर को एक पंक्ति में ग्रुप किया जाए।
आवश्यक आउटपुट को निम्नलिखित दृश्य प्रतिनिधित्व द्वारा बेहतर ढंग से वर्णित किया जा सकता है।

हमें एक फ़ंक्शन लिखना है जो डेटा को उसी तरह ग्रुप और सॉर्ट करता है।
उदाहरण
निम्नलिखित कोड देखें:
const input = {
"before": {
"device": [
{ "id": "1234", "price": "10", "features": [ { "name": "samsung", "price": "10" }, { "name": "Apple", "price": "20" } ] },
{ "id": "2154", "price": "20", "features": [ { "name": "samsung", "price": "30" }, { "name": "Moto", "price": "40" } ] }
]
},
"after": {
"device": [
{ "id": "1234", "price": "50", "features": [ { "name": "samsung", "price": "20" }, { "name": "Lenovo", "price": "30" } ] },
{ "id": "2158", "price": "40", "features": [ { "name": "samsung", "price": "30" } ] }
]
}
};
const formatJSON = data => {
const sub = Object.fromEntries(Object.keys(data).map(k => [k, 0]));
return Object.values(Object.entries(data).reduce((r, [col, { device }]) => {
device.forEach(({ id, price, features }) => {
r[id] = r[id] || [{ id, ...sub }];
r[id][0][col] = price;
features.forEach(({ name, price }) => {
let temp = r[id].find(q => q.name === name);
if (!temp) {
r[id].push(temp = { name, ...sub });
}
temp[col] = price;
});
});
return r;
}, {}));
};
console.log(formatJSON(input));
आउटपुट
यह कंसोल पर निम्नलिखित आउटपुट देगा:
[
[
{ id: '1234', before: '10', after: '50' },
{ name: 'samsung', before: '10', after: '20' },
{ name: 'Apple', before: '20', after: 0 },
{ name: 'Lenovo', before: 0, after: '30' }
],
[
{ id: '2154', before: '20', after: 0 },
{ name: 'samsung', before: '30', after: 0 },
{ name: 'Moto', before: '40', after: 0 }
],
[
{ id: '2158', before: 0, after: '40' },
{ name: 'samsung', before: 0, after: '30' }
]
]