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

Gom nhóm đối tượng JSON theo hai thuộc tính và đếm trong JavaScript

Cho mảng đối tượng {location, identity_long}. Gom nhóm theo cặp (location, identity), thêm count.

Ví dụ

const arr = [    {"location":"Kirrawee","identity_long":"student"},    {"location":"Kirrawee","identity_long":"visitor"},    {"location":"Kirrawee","identity_long":"visitor"},    {"location":"Kirrawee","identity_long":"worker"},    {"location":"Sutherland","identity_long":"student"},    {"location":"Sutherland","identity_long":"resident"},    {"location":"Sutherland","identity_long":"worker"},    {"location":"Sutherland","identity_long":"resident"},    {"location":"Miranda","identity_long":"resident"},    {"location":"Miranda","identity_long":"worker"},    {"location":"Miranda","identity_long":"student"},    {"location":"Miranda","identity_long":""},    {"location":"Miranda","identity_long":"worker"},    {"location":"Miranda","identity_long":"resident"} ]; const groupArray = (arr = []) => {    let map = new Map()    for (let i = 0; i < arr.length; i++) {       const s = JSON.stringify(arr[i]);       if (!map.has(s)) {          map.set(s, {             location: arr[i].location,             identity: arr[i].identity_long,             count: 1,          });       } else {          map.get(s).count++;       }    }    const res = Array.from(map.values())    return res; }; console.log(groupArray(arr));

Kết quả

[    { location: 'Kirrawee', identity: 'student', count: 1 },    { location: 'Kirrawee', identity: 'visitor', count: 2 },    { location: 'Kirrawee', identity: 'worker', count: 1 },    { location: 'Sutherland', identity: 'student', count: 1 },    { location: 'Sutherland', identity: 'resident', count: 2 },    { location: 'Sutherland', identity: 'worker', count: 1 },    { location: 'Miranda', identity: 'resident', count: 2 },    { location: 'Miranda', identity: 'worker', count: 2 },    { location: 'Miranda', identity: 'student', count: 1 },    { location: 'Miranda', identity: '', count: 1 } ]