const arr = [ {},{},{},{}]
vue watch() 可以监听到变化
问题: 我只想取到发生变化的对象, 而非整个arr
当然我可以先copy一下,再遍历对比,拿到 发生改变的对象
或者也可以, 记录每个操作
但感觉有点....
要怎么样才可以更简单,更好看地 完成这任务
这是我现在的写法
watch(() => groupStore.value.member_list, (newValue) => {
memberChange.add = []
memberChange.del = []
memberChange.change = []
allowReset.value = !_.isEqual(copyMemberList, groupStore.value.member_list)
for (let i of copyMemberList) {
const del = newValue.every(item => item.username !== i.username)
if (del) { memberChange.del.push(i); continue }
const change = newValue.find(item => item.username == i.username && !_.isEqual(item, i))
if (change) { memberChange.change.push(i) }
}
for (let i of groupStore.value.member_list) {
const add = copyMemberList.every(item => item.username !== i.username)
if (add) { memberChange.add.push(i);console.log('add=====================',add); continue }
}
console.log('copyMemberList=====================', copyMemberList)
console.log('memberChange=======================', memberChange)
}, { deep: true })