Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การจัดกลุ่มค่าอาร์เรย์ใน JavaScript


สมมติว่าเรามีอาร์เรย์ของวัตถุที่มีข้อมูลบางปีและสัปดาห์เช่นนี้ -

const arr =[ {ปี:2017, สัปดาห์:45}, {ปี:2017, สัปดาห์:46}, {ปี:2017, สัปดาห์:47}, {ปี:2017, สัปดาห์:48}, {ปี:2017 สัปดาห์:50} {ปี:2017 สัปดาห์:52} {ปี:2018 สัปดาห์:1} {ปี:2018 สัปดาห์:2} {ปี:2018 สัปดาห์:5}]; 

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรส่งคืนอาร์เรย์ใหม่ที่วัตถุทั้งหมดที่มีค่าร่วมกันสำหรับคุณสมบัติ "ปี" ถูกจัดกลุ่มเป็นวัตถุแยกต่างหาก

ดังนั้นวัตถุเอาต์พุตสำหรับอาร์เรย์ด้านบนควรมีลักษณะดังนี้ −

[ { 2017 :[{ สัปดาห์:45 สัปดาห์:46 สัปดาห์:47 สัปดาห์:48 สัปดาห์:50 สัปดาห์:53 } { 2018 :[{ สัปดาห์:1 สัปดาห์:2 สัปดาห์:5 }]]

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr =[ {ปี:2017, สัปดาห์:45}, {ปี:2017, สัปดาห์:46}, {ปี:2017, สัปดาห์:47}, {ปี:2017, สัปดาห์:48}, {ปี:2017, สัปดาห์:50}, {ปี:2017, สัปดาห์:52}, {ปี:2018, สัปดาห์:1}, {ปี:2018, สัปดาห์:2}, {ปี:2018, สัปดาห์:5}];const groupByYear =arr => { const res =[]; แผนที่ const ={}; arr.forEach (รายการ => { const temp ={}; if (!map[item.year]) { map[item.year] =[]; temp[item.year] =map [item.year]; res .push(ชั่วคราว); }; map[item.year].push({ ค่า:item.week }); }); return res;};console.log(JSON.stringify(groupByYear(arr), undefined, 4));

ผลลัพธ์

เอาต์พุตในคอนโซล −

[ { "2017":[ { "value":45 }, { "value":46 }, { "value":47 }, { "value":48 }, { "value":50 }, { "value":52 } ] }, { "2018":[ { "value":1 }, { "value":2 }, { "value":5 } ] }]