Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

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

สมมติเรามีอาร์เรย์ของออบเจ็กต์ที่มีข้อมูลปีและสัปดาห์แบบนี้:

const arr = [ {year: 2017, week: 45}, {year: 2017, week: 46}, {year: 2017, week: 47}, {year: 2017, week: 48}, {year: 2017, week: 50}, {year: 2017, week: 52}, {year: 2018, week: 1}, {year: 2018, week: 2}, {year: 2018, week: 5} ];

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

ผลลัพธ์ควรเป็น:

[ { 2017 : [{ week: 45, week: 46, week: 47, week: 48, week: 50, week: 53 }, { 2018 : [{ week: 1, week: 2, week: 5 }] ]

ตัวอย่าง

โค้ดสำหรับนี้:

const arr = [ {year: 2017, week: 45}, {year: 2017, week: 46}, {year: 2017, week: 47}, {year: 2017, week: 48}, {year: 2017, week: 50}, {year: 2017, week: 52}, {year: 2018, week: 1}, {year: 2018, week: 2}, {year: 2018, week: 5} ]; const groupByYear = arr => { const res = []; const map = {}; arr.forEach(item => { const temp = {}; if (!map[item.year]) { map[item.year] = []; temp[item.year] = map[item.year]; res.push(temp); }; map[item.year].push({ value: 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 } ] } ]