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

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

Giả sử chúng ta có một mảng các đối tượng chứa một số dữ liệu năm và tuần như thế này -

 const arr =[{year:2017, week:45}, {year:2017, week:46}, {year:2017, week:47}, {year:2017, week:48}, {year:2017, tuần:50}, {năm:2017, tuần:52}, {năm:2018, tuần:1}, {năm:2018, tuần:2}, {năm:2018, tuần:5}];  

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

Do đó, đối tượng đầu ra cho mảng trên sẽ giống như -

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

Ví dụ

Mã cho điều này sẽ là -

 const arr =[{year:2017, week:45}, {year:2017, week:46}, {year:2017, week:47}, {year:2017, week:48}, {year:2017, tuần:50}, {năm:2017, tuần:52}, {năm:2018, tuần:1}, {năm:2018, tuần:2}, {năm:2018, tuần: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

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

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