背景:在改某个项目的代码的时候,发现2个数组对象的去重,用了2个for循环以及一些其他的判断,看起来有点臃肿,不是说不好,只能能少代码就少写代码,能偷懒绝对要尊重它。
业务背景是操作表格数据,当前表格table获取后端返回的数据,或者可以新增数据,然后在表格table里面可以操作批量删除数据
此函数里面数据,存后端的有id,但是直接新增的没有 ,这里重点是用了filter和every强强联合
// arr1为table数据,arr2为选中的数据
batchDelTableData(arr1,arr2) {
const tableForm = arr1.filter((item) => {
const obj = arr2.every((v) => {
if (v?.id) {
return v.id !== item.id
} else {
const a = JSON.stringify(item)
const b = JSON.stringify(v)
return a !== b
}
})
return obj
})
return tableForm
}