问题描述:
我需要得到一个未来七天的 日,星期,月数据,但是用for遍历后却发现存入的值都是同一个,代码如下
结果为每一个数组对象都是相同的值,这是因为我在循环中重复使用了同一个this.currentDate对象。由于对象是引用类型,所以在每次循环迭代中,你都修改了同一个对象的属性值。因此,最终的dateArray数组中的所有对象都是相同的。
要解决这个问题,你需要在每次循环迭代中创建一个新的currentDate对象,并将其添加到dateArray数组中。以下是修改后的代码:
const dateArray = [] for (let i = 0; i < 7; i++) { let myDate = new Date() myDate.setDate(myDate.getDate() + i + 1)
let weeks = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
let wk = myDate.getDay()
let day = myDate.getDate()
let month = myDate.getMonth() + 1
let currentDate = {
day: day.toString(),
week: weeks[wk].toString(),
month: month.toString()
}
dateArray.push(currentDate)
}
console.log(dateArray)
return dateArray
在这个代码中我每次循环一遍都创建了一个新的currentDate对象,并将其添加到了dataArray数组中
结果如下,问题解决: