2017-05-11 4 views
2

colspan이라는 새 필드로 프로 모션 개체를 업데이트하려고합니다. 하지만 내 불운이 점점개체가 확장 가능하지 않습니다.

오류 : 배열에서

캐치되지 않는 (약속의) 형식 오류 : 속성 열 병합을 추가 할 수 없습니다, 객체가 평가에 확장하지 않습니다 (32) http://localhost:8080/app.js:3160:1 (에서 평가 : 71) 네이티브 Array.forEach에서 (평가에 (고유) .forEach (http://localhost:8080/app.js:3160:1 (AT 평가) : 66 : 35)에서 평가 (고유) Array.forEach에서 (47 (http://localhost:8080/app.js:3160:1)으로 평가 : 64)) eval (eval at (http://localhost:8080/app.js:3160:1), : 62 : 23) at Promise() at F (eval a t (http://localhost:8080/app.js:865:1) : 35 : Object.modifyData ((http://localhost:8080/app.js:3160:1에서 평가) 28) : 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] 
      // // } 
      // } 
      }) 
     }) 

방법이 문제를 해결하는 방법 도와주세요.

+0

'let tmpPromo = Object.assign ({colspan : 0}, promo)'? –

+0

고마워요 @RoyJ –

답변

5

개체 promoObject.preventExtensions (또는)을 통해 확장 성을 해제했습니다. 즉, 새 속성을 추가 할 수 없습니다. 대신 새 속성으로 새 사본을 만들 수 있습니다. 이를 수행하는 편리한 방법은 Object.assign입니다.

let tmpPromo = Object.assign({colspan: 0}, promo); 

이 그것으로 promo에서 colspan, 복사 속성을 정의하는 익명의 객체로 시작하고 객체를 (우리가 tmpPromo에 할당 된)을 반환합니다.