js重复年月日只保留一个年月日,重复年月日只保留一个时分秒两种实现方式

第一种实现方法

indexOf()

indexOf() 方法可返回数组或字符串中某个指定的元素位置。
在数组中该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。
在字符串中,与在数组中不同之处在与,当在字符串中寻找的是空字符串时,返回值为0,而不是-1

也使用的时间插件 moment 使用

实现功能:

 let arr = [
        { id: 4, name: "2023-08-01T10:57:03.000+08:00", status: "waiting" },
        { id: 2, name: "2023-08-01T10:44:03.000+08:00", status: "success" },
        { id: 1, name: "2023-08-01T10:37:03.000+08:00", status: "success" },
        { id: 3, name: "2023-08-03T10:11:03.000+08:00", status: "fail" },
        { id: 3, name: "2023-08-01T10:27:03.000+08:00", status: "running" },
        { id: 3, name: "2023-08-01T10:11:03.000+08:00", status: "fail" },
      ];
      let uniqueDates = [];
      let resultArr = [];
      for (let i = 0; i < arr.length; i++) {
         const operateDt = moment(arr[i].name).format("HH:mm:ss");
         const operateDter = moment(arr[i].name).format("YYYY-MM-DD"); 
         const operateDterer = moment(arr[i].name).format("YYYY-MM-DD HH:mm:ss"); 
        if (uniqueDates.indexOf(operateDter)) {
          uniqueDates.push(operateDter);
          resultArr.push({ id: arr[i].id, name: operateDterer, status: arr[i].status });
        } else {
          resultArr.push({ id: arr[i].id, name: operateDt, status: arr[i].status });
        }
      }
      console.log(resultArr, ">>");

运行结果:

第二种实现方法

includes()

includes() 方法用来判断一个数组或字符串是否包含一个指定的值,如果是则返回 true,否则返回false

实现代码:

 let arr = [
        { id: 4, time: "2023-08-01 10:57:03",  },
        { id: 2, time: "2023-08-01 10:44:03", },
        { id: 1, time: "2023-08-01 10:37:03", },
        { id: 3, time: "2023-08-03 10:11:03", },
        { id: 3, time: "2023-08-01 10:27:03", },
        { id: 3, time: "2023-08-01 10:11:03",},
      ];
      let uniqueDates = [];
      let resultArr = [];
      for (let i = 0; i < arr.length; i++) {
        let dateTime = arr[i].time.split(" ");
        let date = dateTime[0]; 
        let time = dateTime[1]; 
        if (!uniqueDates.includes(date)) {
          uniqueDates.push(date);
          resultArr.push(arr[i]);
        } else {
          resultArr.push({ id: arr[i].id, time: time, });
        }
      }
      console.log(resultArr, ">>");

 运行的结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值