You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取对象数组的time字段并统计各时间值的出现频次

JavaScript时段预约频次统计实现

实现逻辑

你可以通过Array.map提取time字段,再用Array.reduce完成频次统计,两步即可完成需求,针对你示例中的脏数据(第三个对象time字段带多余]),代码中也加了可选的清洗逻辑:

const form = [
    // 这里放你原始的form数组
    {
        "_id": "61436aa8deef0390dcfdea79",
        "time": "8am",
        // 其他字段省略
    },
    {
        "_id": "61436ab8deef0390dcfdea7a",
        "time": "8am",
        // 其他字段省略
    },
    {
        "_id": "61436b1894116c90f82170b9",
        "time": "9am]",
        // 其他字段省略
    }
]

// 1. 提取所有time字段,同时清洗脏数据(不需要清洗可以删掉.replace部分)
const timeList = form.map(item => item.time.replace(/[^a-zA-Z0-9]/g, ''))

// 2. 统计各时段出现频次
const timeCount = timeList.reduce((result, currentTime) => {
    result[currentTime] = (result[currentTime] || 0) + 1
    return result
}, {})

// 按你需要的格式输出结果
for (const [time, count] of Object.entries(timeCount)) {
    console.log(`${time} = ${count}`)
}

输出效果

针对你提供的示例数据,上述代码输出如下:

8am = 2
9am = 1

后续使用

你可以直接通过timeCount.时间段的方式获取对应时段的预约人数,用来做条件判断,比如:

// 判断8am时段预约人数是否超过3人
if (timeCount['8am'] >= 3) {
    alert('8am时段预约已满,请选择其他时段')
}

内容的提问来源于stack exchange,提问作者longtech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:48:05