我在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
}
})
}
},
答案 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};
})
}
},