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

JavaScript แยกออบเจ็กต์ตามคุณสมบัติ

สมมติเรามีออบเจ็กต์แบบนี้:

const obj = { 0: { "time": 1, "day": 1, }, 1: { "time": 2, "day": 1, }, 2: { "time": 3, "day": 1, }, 3: { "time": 1, "day": 2, }, 4: { "time": 2, "day": 2, }, 5: { "time": 3, "day": 2, } };

เราต้องเขียนฟังก์ชันที่รับออบเจ็กต์แบบนี้และจัดกลุ่มคีย์-ค่าในซับออบเจ็กต์แยกกันที่มีค่า day เหมือนกัน

ผลลัพธ์

ผลลัพธ์สำหรับออบเจ็กต์ข้างต้นควรเป็น:

const output = { '1': { '1': { time: 1, day: 1 }, '2': { time: 2, day: 1 }, '3': { time: 3, day: 1 } }, '2': { '1': { time: 1, day: 2 }, '2': { time: 2, day: 2 }, '3': { time: 3, day: 2 } } }

ตัวอย่าง

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

const obj = { 0: { "time": 1, "day": 1, }, 1: { "time": 2, "day": 1, }, 2: { "time": 3, "day": 1, }, 3: { "time": 1, "day": 2, }, 4: { "time": 2, "day": 2, }, 5: { "time": 3, "day": 2, } }; const groupObject = obj => { let res = {}; res = Object.values(obj).reduce((acc, val) => { if(acc[val['day']] === undefined){ acc[val['day']] ={}; }; acc[val['day']][val['time']] = val; return acc; },{}); return res; }; console.log(groupObject(obj));

ผลลัพธ์

ผลลัพธ์ในคอนโซล:

{ '1': { '1': { time: 1, day: 1 }, '2': { time: 2, day: 1 }, '3': { time: 3, day: 1 } }, '2': { '1': { time: 1, day: 2 }, '2': { time: 2, day: 2 }, '3': { time: 3, day: 2 } } }