Добавление элементов в массив (удаление, изменение), как и аналогичные действия над объектами - они не приводят к созданию нового массива/объекта. Так что всё правильно - старые и новые значения одинаковы.
Чтобы иметь доступ к предыдущему значению, надо создавать новый массив. Т.е., например, сейчас у вас есть
this.array.push('hello')
. Вместо этого делайте
this.array = [ ...this.array, 'hello' ]
.
Аналогично и с объектами - вместо какого-нибудь
this.obj.prop = value
будет
this.obj = { ...this.obj, prop: value }
.
UPD.
watch: {
array: function (o, n) {
this.oldData = o
this.newData = n
}
}
У вас тут старое и новое значение местами перепутаны.