前提条件:需要保证合并对象的优先级,就是以哪个对象为基准,合并对象
举例: newData是新获取的对象;oldData是本身就存在的对象,两者都可以发生变化
需求:新获取的数组对象优先级高,下标相同替换,根据长度对新获取的进行补充
let newData = [{},{},{},{a:1}]
let oldData = [{},{},{m:6},{b:2}]
合并后 [{},{},{m:6},{a:1}]
let newData = [{},{},{},{a:1}]
let oldData = [{},{},{b:2},{c:5},{},{b:2}]
合并后 [{},{},{b:2},{a:1},{},{b:2}]
//判断是否为空对象
const isEmpty = (obj) => {
return Object.keys(obj || {}).length == 0;
}
//合并方法
const getData = (newData, oldData) => {
const newArr = []
if(newData.length>oldData.length){
for(i=0; i<newData.length; i++) {
newArr[i] = isEmpty(newData[i]) && oldData.length > i ? oldData[i] : newData[i];
}
} else {
for(i=0; i<oldData.length; i++) {
newArr[i] = isEmpty(newData[i]) ? oldData[i] : newData[i];
}
}
return newArr
}
根据实际情况需要传给后端的数据不包含空对象
//过滤掉空对象
let newData = getData(newData, oldData).filter((N) => !isEmpty(N))