js_根据条件_合并数组对象

241 阅读1分钟

前提条件:需要保证合并对象的优先级,就是以哪个对象为基准,合并对象

举例: 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))