将forEach内置的数组数据写回原始对象

时间:2018-05-10 14:33:46

标签: javascript vue.js

我在vuejs观察者中使用forEach来修改我的对象数组。目标是在每个对象的最后都有新值(end_time)。 allChapters已经包含了我想要的所有内容,但我似乎无法将其写回原始对象。

watch: {
  episode (episode) {
    episode.chapters = episode.chapters.forEach((chapter, index, allChapters) => {
      let endTime = ''
      if (allChapters[(index + 1)]) {
        endTime = allChapters[(index + 1)].start_time
      } else {
        endTime = '99:99:99'
      }
      console.log(index + ': ' + chapter.start_time + ' / ' + endTime)
      allChapters[index] = {
        'start_time': chapter.start_time,
        'title': chapter.title,
        'end_time': endTime
      }
    })
  }
},

1 个答案:

答案 0 :(得分:1)

forEach不会返回任何内容,因此您最终会将undefined分配给episode.chapters

删除episode.chapters =

episode (episode) {
    episode.chapters.forEach((chapter, index, allChapters) => { ... })

或使用返回新数组的map

watch: {
  episode (episode) {
    episode.chapters = episode.chapters.map((chapter, index, allChapters) => {
      let endTime = ''
      if (allChapters[(index + 1)]) {
        endTime = allChapters[(index + 1)].start_time
      } else {
        endTime = '99:99:99'
      }
      console.log(index + ': ' + chapter.start_time + ' / ' + endTime)

      return {...chapter, 'end_time': endTime};
    })
  }
},