我正在使用一个函数,它需要返回一个数组的数据,日期的数据总是相同的但日期的定义是不一样的,这里保存在数组中的日期,每个日期都是不同的但当我试图把这个数据放在其他数组总是返回数组的最后日期:
const dates=[new Date(startTimestamp), new Date(startTimestamp+ 6.048e+8), new Date(startTimestamp+2*+ 6.048e+8), new Date(startTimestamp+3*+ 6.048e+8)]
for (let index = 0; index < 4; index++) {
const week = weeksData[weekIndex + index];//I have an array of weeks to search for some data
//if that data is not in the array then i want to add a new week with a new Date
if (week !== undefined ) {
newWeeks.push(week);
}
else{
const mockWeek={}
mockWeek.timestamp=dates[index].valueOf();
mockWeek.week= dayjs(dates[index]).format('MMM DD');
console.log(dates[index])
console.log(mockWeek)
newWeeks.push(mockWeek)
}
}
在这里你可以看到循环有正确的值但是,最终数组没有把期望的值放入最后的数组
我做错了什么?
星期数组是这样的
Array(17)
0: Week
id: "test-project_1652590800000"
projectId: "test-project"
data:{...}
timestamp: 1652590800000
week: "May 15"
1: Week
id: "test-project_1641196800000"
projectId: "test-project"
data:{...}
timestamp: 1641196800000
week: "Jan 03"
2: Week
id: "test-project_1641801600000"
projectId: "test-project"
data:{...}
timestamp: 1641801600000
week: "Jan 10"
我在这个数组中搜索一些日期,但如果日期不存在,那就是当我想添加mockWeek时,具有相同的数据,但具有不同的周和时间戳,当模拟周总是具有数组中的最后日期时,这里我没有5月8日和5月1日,例如,然后我想添加这样的模拟周
3: Week
id: "test-project_1651381200000"
projectId: "test-project"
data:{...}
timestamp: 1651381200000
week: "May 1"
4: Week
id: "test-project_1651986000000"
projectId: "test-project"
data:{...}
timestamp: 1651986000000
week: "May 8"
但是我在两周的数据中都有"5月8日"。和时间戳从"5月8日">
这不是一个答案,这是一个寻求澄清的长评论。
从发布的代码中创建一个可运行的代码片段显示它的行为不符合描述。我添加了分号并修复了语法错误。它似乎做你想要的(即添加丢失的周对象到newWeeks数组)。
您需要发布演示问题的代码(最好是可运行的代码段)。在那之前,回答只能是猜测。
let startTimestamp = new Date().setHours(0,0,0,0);
let dates=[new Date(startTimestamp), new Date(startTimestamp+ 6.048e+8), new Date(startTimestamp+2*+ 6.048e+8), new Date(startTimestamp+3*+ 6.048e+8)];
let weekIndex = 5; // Ensure no weeks are found
let newWeeks = [];
let weeksData = [{ // Minimal data in array from OP
0: 'Week',
timestamp: 1652590800000,
week: "May 15"
},{
1: 'Week',
timestamp: 1641196800000,
week: "Jan 03"
},{
2: 'Week',
timestamp: 1641801600000,
week: "Jan 10"
}];
// Loop from OP
for (let index = 0; index < 4; index++) {
let week = weeksData[weekIndex + index];
if (week !== undefined ) {
newWeeks.push(week);
} else {
let mockWeek = {};
mockWeek.timestamp = dates[index].valueOf();
mockWeek.week = dayjs(dates[index]).format('MMM DD');
console.log(dates[index]);
console.log(mockWeek);
newWeeks.push(mockWeek);
}
}
console.log(newWeeks);
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.2/dayjs.min.js"></script>