JavaScript如何按日期分割带时间属性的温度对象数组
实现方案
你可以通过Array.reduce()方法按日期对数据进行分组,核心逻辑是用年月日格式的字符串作为分组唯一key,把同日期的数据归集到同一数组下,最后提取归集结果的所有值就能得到你要的多维数组。
完整代码
// 分组逻辑 const groupedTemperatureData = Object.values( temperatureData.reduce((groupMap, item) => { // 提取ISO时间字符串前10位作为分组key(格式为YYYY-MM-DD,天然匹配日期分组需求) const dateKey = item.time.slice(0, 10) // 也可以用你预处理新增的date字段生成key,写法如下: // const dateKey = `${item.date.getFullYear()}-${String(item.date.getMonth()+1).padStart(2,'0')}-${String(item.date.getDate()).padStart(2,'0')}` // 初始化对应日期的分组数组 if (!groupMap[dateKey]) { groupMap[dateKey] = [] } // 如果不需要保留之前新增的date字段,可以push前删除:delete item.date groupMap[dateKey].push(item) return groupMap }, {}) )
补充说明
- 你的原始预处理代码是直接修改原数据对象新增date字段,如果不想污染原始数据,可以把预处理逻辑调整为返回新对象:
const temperatureData = data .filter(d => d.type === 'temperature') .map(d => ({ ...d, date: new Date(d.time) })) - 最终输出的
groupedTemperatureData和你给出的预期格式完全一致。
内容的提问来源于stack exchange,提问作者kakakakakakakk
相关产品推荐
相关产品推荐

