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

Flutter中如何统计字符串列表中重复日期的数量?

统计日期字符串列表中的日期出现次数并生成指定格式输出

我来帮你解决这个统计日期出现次数的问题!你的需求是从包含日期时间的字符串列表中,提取纯日期部分并统计每个日期的出现次数,最后生成"日期,mykey:次数"格式的输出列表。下面是具体的实现方案:

核心思路

  1. 先用映射对象统计次数:通过遍历输入列表,提取每个元素的日期部分,用对象的键存储日期,值存储对应出现的次数,这样能高效完成统计。
  2. 生成目标格式的输出列表:遍历统计好的映射对象,把每个日期和次数格式化成你需要的字符串,推入输出列表。

JavaScript 实现代码

基础循环版本(和你原来的代码风格一致)

const MyList_date_input = ["2020-09-08 11:16", "2020-09-08 08:10", "2020-09-09 21:23", "2020-09-09 21:59", "2020-09-10 07:46"];
const List_date_output = [];
// 用于存储日期和对应计数的映射
const dateCountMap = {};

// 第一步:遍历输入列表,统计每个日期的出现次数
for (var i = 0; i < MyList_date_input.length; i++) {
    // 提取日期部分:按空格分割字符串,取第一个元素
    const datePart = MyList_date_input[i].split(' ')[0];
    // 更新计数:如果日期已存在则加1,否则初始化为1
    if (dateCountMap[datePart]) {
        dateCountMap[datePart]++;
    } else {
        dateCountMap[datePart] = 1;
    }
}

// 第二步:根据统计结果生成输出列表
for (const date in dateCountMap) {
    List_date_output.push(`${date},mykey:${dateCountMap[date]}`);
}

console.log(List_date_output);
// 输出结果:["2020-09-08,mykey:2", "2020-09-09,mykey:2", "2020-09-10,mykey:1"]

更简洁的现代JS版本(使用reduce和map)

如果喜欢更简洁的代码,可以用数组的reduce方法完成统计,再用map生成输出:

const MyList_date_input = ["2020-09-08 11:16", "2020-09-08 08:10", "2020-09-09 21:23", "2020-09-09 21:59", "2020-09-10 07:46"];

// 用reduce统计每个日期的出现次数
const dateCountMap = MyList_date_input.reduce((countMap, item) => {
    const datePart = item.split(' ')[0];
    // 简化计数更新逻辑
    countMap[datePart] = countMap[datePart] ? countMap[datePart] + 1 : 1;
    return countMap;
}, {});

// 将统计结果转成目标格式的列表
const List_date_output = Object.entries(dateCountMap).map(([date, count]) => `${date},mykey:${count}`);

console.log(List_date_output);

关键细节说明

  • 日期提取的健壮性:如果你的输入日期格式可能有变化(比如时间部分用其他分隔符),可以用正则表达式来提取日期,比如:
    const datePart = /^\d{4}-\d{2}-\d{2}/.exec(MyList_date_input[i])[0];
    
    这个正则会匹配开头的yyyy-mm-dd格式的日期,适配更多场景。
  • 效率对比:用映射对象统计的时间复杂度是O(n),比嵌套循环(O(n²))高效很多,尤其是当列表很大的时候优势明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:51:38