第一种实现方法
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, ">>");
运行的结果: