Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

JavaScript: Tách đối tượng dựa trên thuộc tính

Giả sử chúng ta có đối tượng như sau:

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, } };

Chúng ta cần viết hàm JavaScript nhận đối tượng như vậy và nhóm tất cả các cặp khóa-giá trị vào các đối tượng con riêng biệt có cùng giá trị cho khóa day.

Đầu ra

Đầu ra cho đối tượng trên nên là:

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 } } }

Ví dụ

Mã cho việc này:

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));

Đầu ra

Kết quả trên console:

{    '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 }    } }