สมมติว่าเรามีอาร์เรย์ JSON แบบนี้ -
const arr =[{ "data":[ { "W":1, "A1":"123" }, { "W":1, "A1":"456" }, { "W":2, "A1":"4578" }, { "W":2, "A1":"2423" }, { "W":2, "A1":"2432" }, { "W":2, "A1":"24324" } ]}];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าวและแปลงเป็นอาร์เรย์ JSON ต่อไปนี้ -
<ก่อนหน้า>[ { "1":[ { "A1":"123" }, { "A1":"456" } ] }, { "2":[ { "A1":"4578" }, { " A1":"2423" }, { "A1":"2432" }, { "A1":"24324" } ] }];ตัวอย่าง
const arr =[{ "data":[ { "W":1, "A1":"123" }, { "W":1, "A1":"456" }, { "W":2, "A1":"4578" }, { "W":2, "A1":"2423" }, { "W":2, "A1":"2432" }, { "W":2, "A1":"24324" } ]}];const groupJSON =(arr =[]) => { const preCombined =arr[0].data.reduce((acc, val) => { acc [val.W] =acc[val.W] || []; acc[val.W].push({ A1:val.A1 }); กลับ acc; }, {}); const รวมกัน =Object.keys(preCombined).reduce((acc, val) => { const temp ={}; temp[val] =preCombined[val]; acc.push(temp); return acc; }, [] ); ส่งคืนรวมกัน;};console.log(JSON.stringify(groupJSON(arr), undefined, 4));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
<ก่อนหน้า>[ { "1":[ { "A1":"123" }, { "A1":"456" } ] }, { "2":[ { "A1":"4578" }, { " A1":"2423" }, { "A1":"2432" }, { "A1":"24324" } ] }]