如何根据 JavaScript 中的数据格式化对象数组

How to format Array of Object with respect to the data inside of it in JavaScript

我正在尝试制作一个 Object 的数组,它在一个对象中添加相同的工作日数据,就像如果我们在五个对象中有 weekday:1 那么我们将得到

{...{}, weekDay:1, repeated:5}

这是动态数据我可以用像过滤 weekDay === 1 这样的 hade 代码结果编写代码,然后找到 return 数组长度,但我现在想要的是一个接受这个的函数数据数组和 returns 不会重复同一周的综合数组,并给我重复的数字,如

{...{}, weekDay:1, repeated:5}

我们拥有的数据:

[
    {
        "weekDay": 1,
        "role": "admin"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 1,
        "role": "creator"
    },
    {
        "weekDay": 1,
        "role": "creator"
    },
    {
        "weekDay": 1,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
    {
        "weekDay": 3,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
   {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 5,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "creator"
    },
    {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 5,
        "role": "screener"
    },
    {
        "weekDay": 5,
        "role": "screener"
    },
    {
        "weekDay": 5,
        "role": "creator"
    },
    {
       "weekDay": 6,
        "role": "creator"
    },
    {
        "weekDay": 5,
        "role": "screener"
   },
    {
        "weekDay": 1,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 1,
       "role": "screener"
    },
    {
        "weekDay": 1,
        "role": "screener"
    },
    {
        "weekDay": 1,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
    {
        "weekDay": 34,
        "role": "creator"
    }
]

检查这是否是您想要的:

const data = [
    {
        "weekDay": 1,
        "role": "admin"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 1,
        "role": "creator"
    },
    {
        "weekDay": 1,
        "role": "creator"
    },
    {
        "weekDay": 1,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
    {
        "weekDay": 3,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
   {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 5,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 4,
        "role": "creator"
    },
    {
        "weekDay": 4,
        "role": "screener"
    },
    {
        "weekDay": 5,
        "role": "screener"
    },
    {
        "weekDay": 5,
        "role": "screener"
    },
    {
        "weekDay": 5,
        "role": "creator"
    },
    {
       "weekDay": 6,
        "role": "creator"
    },
    {
        "weekDay": 5,
        "role": "screener"
   },
    {
        "weekDay": 1,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 1,
       "role": "screener"
    },
    {
        "weekDay": 1,
        "role": "screener"
    },
    {
        "weekDay": 1,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 3,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "creator"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 2,
        "role": "screener"
    },
    {
        "weekDay": 3,
        "role": "screener"
    },
    {
        "weekDay": 34,
        "role": "creator"
    }
];


const map = data.reduce((map, item) => ({ ...map, [item.weekDay]: (map[item.weekDay] || 0) + 1 }), {});
const arr = Object.keys(map).map((key) => ([{ weekDay: key, repeated: map[key] }]));
console.log(arr);