Computer >> Máy Tính >  >> Lập trình >> Javascript

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

Giả sử, chúng ta có một đối tượng như thế 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, }
};

Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một đối tượng như vậy và nhóm tất cả các cặp giá trị khóa thành các đối tượng phụ riêng biệt có cùng giá trị cho khóa ngày.

Đầu ra

Đầu ra cho đối tượng trên phải 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 điều này sẽ là -

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

Đầu ra trong bảng điều khiển -

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