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

如何在JavaScript中按Title及当前周时间多条件分组求和?

按标题分组并统计本周Positive总和

原始数据

[
  {
    "Id": 1,
    "Title": "Title_1",
    "Positive": 5,
    "CreateTs": 1674231433428
  },
  {
    "Id": 2,
    "Title": "Title_1",
    "Positive": 8,
    "CreateTs": 1674288139000
  },
  {
    "Id": 3,
    "Title": "Title_2",
    "Positive": 5,
    "CreateTs": 1674633970000
  },
  
  {
    "Id": 4,
    "Title": "Title_1",
    "Positive": 12,
    "CreateTs": 1674649613000
  },
  
  {
    "Id": 5,
    "Title": "Title_1",
    "Positive": 10,
    "CreateTs": 1674649741000
  }
]

期望输出

[
  {
    "Title": "Title_1",
    "Positive_sum": 22
  },
  
  {
    "Title": "Title_2",
    "Positive_sum": 5
  }
]

解决方案(JavaScript)

核心逻辑

  1. 筛选出属于当前周的数据项
  2. 按Title分组,累加每组的Positive值

完整代码

// 判断时间戳是否在当前周(默认周一为一周起始,可自行调整)
function isInCurrentWeek(timestamp) {
  const now = new Date();
  // 计算当前周周一的0点时刻
  const weekStart = new Date(now.setDate(now.getDate() - now.getDay() + 1));
  weekStart.setHours(0, 0, 0, 0);
  // 计算当前周周日的23:59:59时刻
  const weekEnd = new Date(weekStart);
  weekEnd.setDate(weekEnd.getDate() + 6);
  weekEnd.setHours(23, 59, 59, 999);

  const targetTime = new Date(timestamp);
  return targetTime >= weekStart && targetTime <= weekEnd;
}

// 原始数据
const rawData = [
  {"Id":1,"Title":"Title_1","Positive":5,"CreateTs":1674231433428},
  {"Id":2,"Title":"Title_1","Positive":8,"CreateTs":1674288139000},
  {"Id":3,"Title":"Title_2","Positive":5,"CreateTs":1674633970000},
  {"Id":4,"Title":"Title_1","Positive":12,"CreateTs":1674649613000},
  {"Id":5,"Title":"Title_1","Positive":10,"CreateTs":1674649741000}
];

// 分组求和
const groupedResult = Object.values(rawData.reduce((acc, item) => {
  // 跳过非本周的数据
  if (!isInCurrentWeek(item.CreateTs)) return acc;

  const title = item.Title;
  // 初始化分组项
  if (!acc[title]) {
    acc[title] = {
      Title: title,
      Positive_sum: 0
    };
  }
  // 累加Positive值
  acc[title].Positive_sum += item.Positive;
  return acc;
}, {}));

console.log(groupedResult);

代码说明

  • 周起始调整:如果需要以周日为一周起始,把now.getDay() + 1改成now.getDay()即可。
  • 兼容性:代码基于原生JavaScript,无需依赖第三方库,可直接在浏览器或Node.js环境运行。
  • 可靠性:不受原始数据顺序影响,只要时间戳符合条件就会被统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:10:20