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

Nhóm dữ liệu theo tháng trong JavaScript

Cho object dữ liệu người dùng dạng { "Mary": {"2016-1":2, "2016-5":1}, "Paul": {...} }. Gom nhóm theo ngày (key ngày) thành object mới: mỗi ngày chứa mảng names và mảng values tương ứng.

Ví dụ

const obj = {
  "Mary": {"2016-1":2, "2016-5":1, "2016-3":1},
  "Paul": {"2016-1":1, "2016-3":1},
  "moth": {"2016-1":2, "2016-5":1}
};
const groupByDate = (obj = {}) => {
  const names = Object.keys(obj);
  const res = {};
  for (let i = 0; i < names.length; i++) {
    const name = names[i];
    const dates = Object.keys(obj[name]);
    for (let j = 0; j < dates.length; j++) {
      const date = dates[j];
      if (!res.hasOwnProperty(date)) {
        res[date] = { names: [name], values: [obj[name][date]] };
      } else {
        res[date].names.push(name);
        res[date].values.push(obj[name][date]);
      }
    }
  }
  return res;
};
console.log(groupByDate(obj));

Kết quả

{
  '2016-1': { names: ['Mary','Paul','moth'], values: [2,1,2] },
  '2016-5': { names: ['Mary','moth'], values: [1,1] },
  '2016-3': { names: ['Mary','Paul'], values: [1,1] }
}