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

Nhóm một Mảng và Đếm các mục tạo mảng mới dựa trên Nhóm trong JavaScript

Giả sử, chúng ta có một mảng các đối tượng như thế này -

 const arr =[{region:"Africa", fruit:"Orange", user:"Gary"}, {region:"Africa", fruit:"Apple", user:"Steve"}, {region:"Châu Âu", trái cây:"Orange", user:"John"}, {region:"Europe", fruit:"Apple", user:"bob"}, {region:"Asia", fruit:"Orange", người dùng:"Ian"}, {region:"Asia", fruit:"Apple", user:"Angelo"}, {region:"Africa", fruit:"Orange", user:"Gary"}];  

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 phải chuẩn bị một mảng đối tượng mới nhóm dữ liệu dựa trên thuộc tính "khu vực" của các đối tượng.

Hàm cũng phải giữ số lượng người dùng duy nhất cho một khu vực cụ thể.

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

 const output =[{"region":"Africa", "count":2}, {"region":"Europe", "count":2}, {"region":"Asia", "count ":2}]; 

Ví dụ

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

 const arr =[{region:"Africa", fruit:"Orange", user:"Gary"}, {region:"Africa", fruit:"Apple", user:"Steve"}, {region:"Châu Âu", trái cây:"Orange", user:"John"}, {region:"Europe", fruit:"Apple", user:"bob"}, {region:"Asia", fruit:"Orange", user:"Ian"}, {region:"Asia", fruit:"Apple", user:"Angelo"}, {region:"Africa", fruit:"Orange", user:"Gary"}]; const groupByArea =(arr =[]) => {const res =[]; arr.forEach (el => {let key =[el.region, el.user] .join ('|'); if (! this [el.region]) {this [el.region] ={region:el .region, count:0}; res.push (this [el.region]);}; if (! this [key]) {this [key] =true; this [el.region] .count ++;};} , Object.create (null)); trả về res;} console.log (groupByArea (arr)); 

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

 [{region:'Africa', count:2}, {region:'Europe', count:2}, {region:'Asia', count:2}]