![](/img/trans.png)
[英]Object is not extensible error when creating new attribute for array of objects
[英]object is not extensible error in vuejs
我想用名为colspan的新字段更新促销对象。 但是我的运气不好
错误:
未捕获(承诺)TypeError:无法添加属性colspan,对象在Array.forEach(本机)处的eval(eval在( http:// localhost:8080 / app.js:3160:1 ),:71:32)处不可扩展)在eval(eval在( http:// localhost:8080 / app.js:3160:1 ),:66:35)在Array.forEach(本机)在eval(在( http:// localhost:8080 / app.js:3160:1 )::64:47)在val的Array.forEach(本地)(在( http:// localhost:8080 / app.js:3160:1 ),:62:23的eval) Promise()位于F(eval位于( http:// localhost:8080 / app.js:865:1 )::35:28)位于Object.modifyData(eval位于( http:// localhost:8080 / app.js :3160:1 ) ,:48:12 )
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]
// // }
// }
})
})
请帮我解决这个问题。
目的promo
已扩展通过关闭Object.preventExtensions
(或seal
或freeze
)。 这意味着您不能向其添加新属性。 相反,您可以使用新属性为其制作新副本。 一种方便的方法是使用Object.assign
。
let tmpPromo = Object.assign({colspan: 0}, promo);
这从定义colspan
的匿名对象开始,将promo
属性复制到其中,然后返回该对象(我们将其分配给tmpPromo
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.