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

Nhóm giá trị mảng trong JavaScript

Giả sử chúng ta có mảng đối tượng chứa dữ liệu năm và tuần như sau:

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

Chúng ta cần viết hàm JavaScript nhận mảng như vậy. Hàm trả về mảng mới nơi tất cả đối tượng có giá trị chung cho thuộc tính "year" được nhóm vào đối tượng riêng biệt.

Vì vậy, đối tượng đầu ra cho mảng trên nên trông như:

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

Ví dụ

Mã cho việc này:

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

Đầu ra

Kết quả trên console:

[    {       "2017": [          {             "value": 45          },          {             "value": 46          },          {             "value": 47          },          {             "value": 48          },          {             "value": 50          },          {             "value": 52          }       ]    },    {       "2018": [          {             "value": 1          },          {             "value": 2          },          {             "value": 5          }       ]    } ]