Как я могу преобразовать массив объектов в массив, а затем уникальное количество массивов

#javascript

Вопрос:

 const form = [
    {
        "_id": "61436aa8deef0390dcfdea79",
        "user": "613f92eb98da0c5facc1b4ca",
        "registerName": "Edwin",
        "email": "edwin@asng.space",
        "category": "Urusan Lain Lain",
        "title": " Ah Yong",
        "contactNumber": "0191231232",
    --> "time": "8am",
        "dateBooking": "2021-09-18",
        "icNumber": "860909-49-5851",
        "date": "2021-09-16T16:02:48.457Z",
        "__v": 0
    },
    {
        "_id": "61436ab8deef0390dcfdea7a",
        "user": "613f92eb98da0c5facc1b4ca",
        "registerName": "ESTSETS",
        "email": "123@gmail.com",
        "category": "Daftar Baru",
        "title": " Ah Yong",
        "contactNumber": "0149530130",
    --> "time": "8am",
        "dateBooking": "2021-09-18",
        "icNumber": "123123123123",
        "date": "2021-09-16T16:03:04.211Z",
        "__v": 0
    },
    {
        "_id": "61436b1894116c90f82170b9",
        "user": "613f92eb98da0c5facc1b4ca",
        "registerName": "Ah Yong",
        "email": "312@gmail.com",
        "category": "Pertanyaan",
        "title": " Ah Yong",
        "contactNumber": "0149530130",
   -->  "time": "9am]",
        "dateBooking": "2021-09-18",
        "icNumber": "123654",
        "date": "2021-09-16T16:04:40.962Z",
        "__v": 0
    }
]
 

Как я могу преобразовать time внутри объекта в

 uniqueCount = [8am,9am,10am,8am,9am,10am,8am,9am,10am,11am];
 

и подсчитайте частоту каждого раза в массиве? Я хочу получить такой результат, как:

 8am = 3
9am = 3
10am = 3
11am = 1
 

Я не уверен, сработает ли это, потому что я хотел бы каждый раз фильтровать, сколько людей нужно для создания условия.

Ответ №1:

Вы можете использовать Array#map для получения массива свойств времени, а затем использовать Array#reduce для получения объекта с частотами.

 const arr=[{_id:"61436aa8deef0390dcfdea79",user:"613f92eb98da0c5facc1b4ca",registerName:"Edwin",email:"edwin@asng.space",category:"Urusan Lain Lain",title:" Ah Yong",contactNumber:"0191231232",time:"8am",dateBooking:"2021-09-18",icNumber:"860909-49-5851",date:"2021-09-16T16:02:48.457Z",__v:0},{_id:"61436ab8deef0390dcfdea7a",user:"613f92eb98da0c5facc1b4ca",registerName:"ESTSETS",email:"123@gmail.com",category:"Daftar Baru",title:" Ah Yong",contactNumber:"0149530130",time:"8am",dateBooking:"2021-09-18",icNumber:"123123123123",date:"2021-09-16T16:03:04.211Z",__v:0},{_id:"61436b1894116c90f82170b9",user:"613f92eb98da0c5facc1b4ca",registerName:"Ah Yong",email:"312@gmail.com",category:"Pertanyaan",title:" Ah Yong",contactNumber:"0149530130",time:"9am",dateBooking:"2021-09-18",icNumber:"123654",date:"2021-09-16T16:04:40.962Z",__v:0}];
const res = arr.map(x => x.time).reduce((acc, curr)=>{
  acc[curr] = (acc[curr] || 0)   1;
  return acc;
}, {});
console.log(res);