Javascript 对象不可扩展vuejs中出现错误
我想用名为colspan的新字段更新promo对象。但我的坏运气是 错误: 未捕获(承诺中)TypeError:无法添加属性colspan,对象不可扩展 评估时(评估时(),:71:32) at Array.forEach(本机) 评估时(评估时(),:66:35) at Array.forEach(本机) 评估时(评估时(),:64:47) at Array.forEach(本机) 评估时(评估时(),:62:23) 允诺 在F时(评估时间(),:35:28) 在Object.modifyData(eval at(),:48:12)Javascript 对象不可扩展vuejs中出现错误,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我想用名为colspan的新字段更新promo对象。但我的坏运气是 错误: 未捕获(承诺中)TypeError:无法添加属性colspan,对象不可扩展 评估时(评估时(),:71:32) at Array.forEach(本机) 评估时(评估时(),:66:35) at Array.forEach(本机) 评估时(评估时(),:64:47) at Array.forEach(本机) 评估时(评估时(),:62:23) 允诺 在F时(评估时间(),:35:28) 在Object.modifyDa
departmentId.forEach(departmentId=>{
结果[部门ID]=[]
departmentWiseResults[departmentId].forEach((促销,索引)=>{
让tmpPromo=promo
dateRanges.dateRanges.forEach(范围=>{
让startedDateWeek=时刻(promo.startDate.week()
让endDateWeek=时刻(promo.endDate.week()
让startedYear=时刻(promo.startDate.year())
让endedYear=时刻(promo.endDate).year()
tmpPromo.colspan=0
如果(range.startYear===startedYear&&range.endYear===endedear&&range.weekNumber=startedDateWeek){
tmpPromo.colspan++
}
departmentWiseResults[departmentId]。拼接(索引,1,tmpPromo)
log('started:'、startedDateWeek、endDateWeek、startedYear、endedYear、promo、tmpPromo、departmentWiseResults[departmentId])
})
log('promo在添加colspna之后:',promo)
//if(isInRange(范围、促销)){
//console.log('for range',range.startDate,range.endDate)
//console.log('for promo',promo.id)
//console.log(
//"diff is",,
//findWeekspan(范围,dateRanges.dateRanges[dateRanges.dateRanges.length-1],促销)
// )
////如果(!promo.used){
////promo.used=true
////结果[部门ID]
// // }
// }
})
})
请帮助我解决此问题。对象
promo
已通过(或)关闭可扩展性。这意味着您不能向其添加新属性。相反,您可以使用新属性创建它的新副本。一个方便的方法是使用
这从定义
colspan
的匿名对象开始,将promo
中的属性复制到其中,然后返回该对象(我们将其分配给tmpPromo
)。让tmpPromo=object.assign({colspan:0},promo)?非常感谢@RoyJ
departmentIds.forEach(departmentId => {
results[departmentId] = []
departmentWiseResults[departmentId].forEach((promo, index) => {
let tmpPromo = promo
dateRanges.dateRanges.forEach(range => {
let startedDateWeek = moment(promo.startDate).week()
let endDateWeek = moment(promo.endDate).week()
let startedYear = moment(promo.startDate).year()
let endedYear = moment(promo.endDate).year()
tmpPromo.colspan = 0
if (range.startYear === startedYear && range.endYear === endedYear && range.weekNumber <= endDateWeek && range.weekNumber >= startedDateWeek) {
tmpPromo.colspan++
}
departmentWiseResults[departmentId].splice(index, 1, tmpPromo)
console.log('stareted:', startedDateWeek, endDateWeek, startedYear, endedYear, promo, tmpPromo, departmentWiseResults[departmentId])
})
console.log('promo after adding colspna:', promo)
// if (isInRange(range, promo)) {
// console.log('for range', range.startDate, range.endDate)
// console.log('for promo', promo.id)
// console.log(
// 'diff is',
// findWeekspan(range, dateRanges.dateRanges[dateRanges.dateRanges.length - 1], promo)
// )
// // if (!promo.used) {
// // promo.used = true
// // results[departmentId]
// // }
// }
})
})
let tmpPromo = Object.assign({colspan: 0}, promo);