美文网首页
比较数组-比较两个数组是 删除/新增/更新

比较数组-比较两个数组是 删除/新增/更新

作者: Romyo | 来源:发表于2018-04-04 14:37 被阅读0次
    先搞清要做什么?
    1.比较两个新旧数组,判断是哪种情况------------- 删除/新增/更新 
    2.查询字典,利用引用类型的特性返回出对应的对象
    
    测试这个函数需要准备的参数
    1.mockoriginConfigValue---旧数据
    2.mockconfigValue    -----新数据
    3.dictionary         -----字典,用来转换成中文
    4.returnObj          ----利用引用类型的特性,返回的obj
    即将要测试的函数
    findDifferentData(mockoriginConfigValue, mockconfigValue, dictionary, obj)
    
    参数1,参数2
    情况1---删除
    oldData=[A,B,C]
    newData=[A,B]
    
    const oldItem=null; //存放未被删之前的数据 
    const newItem=null; //存放找到的被删除后的这条undefined数据
    
    if(oldData.length>newData.length){  '删除'
           for(let i=0;i<oldData.length;i++){
                    if(!newData[i]){//说明C不存在于newData里面
                        oldItem=oldData[i]  ==>C
                        newItem=newData[i]  ==>被删后的状态
                    }
            }
    }
    
    测试用的mock数据用这个测上面的findDifferentData函数
       const mockoriginConfigValue = JSON.parse(`[["457","458"],["457"]]`); 相当于[A,B]
       const mockconfigValue = JSON.parse(`[["457","458"]]`);               相当于[A]
    
    情况2---新增
    oldData=[A,B]
    newData=[A,B,C]
    
    const oldItem='空'
    const newItem=newData[newData.length-1] //最后一条就是新增出来的  即 C
    
    
    测试用的mock数据用这个测上面的findDifferentData函数
       const mockoriginConfigValue = JSON.parse(`[["457","458"]]`); 相当于[A]
       const mockconfigValue = JSON.parse(`[["457","458"],["457"]]`); 相当于[A,B]
    
    情况3--更新
    oldData=[A,B,C]
    newData=[A,B,D]
    
    const oldItem=null; //存放更新前的数据 
    const newItem=null; //存放更新后的数据
    
    if(oldData.length==newData.length){
          for(let i=0;i<newData.length;i++) {
                if(newData[i] !== oldData[i] ){  //这边要视情况而定 如果C!==D
                    oldItem=oldData[i]
                    newItem= newData[i]   
                }
          } 
    } 
    测试用的mock数据用这个测上面的findDifferentData函数
    const mockoriginConfigValue = JSON.parse(`[["457","458"],["457"]]`); 相当于[A,B]
    const mockconfigValue = JSON.parse(`[["457","458"],["457","333"]]`); 相当于[A,C]
    
    参数3
    const dictionary = {
        "332": "332-区块2",
        "333": "333-区块1",
        "349": "349-区块3",
        "429": "429-区块1",
        "430": "430-区块2",
        "431": "431-区域1",
        "442": "442-区块1",
        "443": "443-区块2",
        "457": "457-区块2",
        "458": "458-区块6",
        "459": "459-区块4",
        "460": "460-区块3",
        "461": "461-区块5",
        "462": "462-野生动物园",
        "463": "463-测试新增区块",
        "464": "464-区块8 新",
        "465": "465-区块9 新",
        "466": "466-区块10",
        "467": "467-区块1",
        "468": "468-湘湖及杭州乐园",
        "482": "482-区块12",
        "483": "483-区块13",
        "495": "495-区块1",
        "496": "496-区块2",
        "497": "497-区块3",
        "499": "499-区块2",
        "501": "501-区块4",
        "503": "503-区块4",
        "504": "504-区块1",
        "505": "505-区块2",
        "506": "506-区块1",
        "508": "508-阿里巴巴西溪园区",
        "509": "509-临时",
        "519": "519-区块1",
        "520": "520-区块1",
        "521": "521-区块3",
        "526": "526-区块2",
        "551": "551-name3",
        "558": "558-天安门",
        "559": "559-天坛公园",
        "560": "560-朝阳公园",
        "561": "561-石景山",
        "562": "562-龙德广场",
        "563": "563-朝阳公园",
        "564": "564-东风公园",
        "569": "569-乌鲁木齐市植物园",
        "570": "570-头屯河公园",
        "571": "571-乌鲁木齐市政府",
        "572": "572-乌鲁木齐北郊客运站",
        "574": "574-北京人工体育场",
        "575": "575-成都动物园",
        "576": "576-深圳东站",
        "577": "577-贵阳站",
        "579": "579-青岛站",
        "583": "583-青岛世博园景区",
        "606": "606-台北兴华公园",
        "607": "607-水稚公园",
        "608": "608-水车博览园",
        "609": "609-兰州水车园",
        "610": "610-兰州汽车南站",
        "611": "611-兰州西站",
        "612": "612-龙头山森林公园",
        "640": "640-111",
        "641": "641-222",
        "642": "642-333",
        "644": "644-444",
        "645": "645-萧山机场",
        "647": "647-宋城",
        "650": "650-广化寺",
        "652": "652-666",
        "656": "656-n4",
        "691": "691-123",
        "692": "692-234",
        "693": "693-123",
        "694": "694-123",
        "695": "695-234",
        "696": "696-1",
        "697": "697-2",
        "698": "698-西庐区",
        "699": "699-主区域",
        "700": "700-主配送区块",
        "701": "701-主配送区",
        "711": "711-dddddd",
        "712": "712-123",
        "713": "713-太炎小学",
        "715": "715-99999",
        "720": "720-分区名称",
        "721": "721-n1",
        "722": "722-盒饭",
        "723": "723-n1",
        "724": "724-n2",
        "725": "725-n3",
        "726": "726-dcdcdc1222",
        "727": "727-11111",
        "730": "730-1204",
        "732": "732-XYJ",
        "734": "734-XYJ",
        "735": "735-午潮山",
        "736": "736-西溪园区",
        "737": "737-世树测试",
        "738": "738-世树测试2",
        "739": "739-测试3",
        "740": "740-区块14",
        "741": "741-区块15",
        "742": "742-区块16",
        "743": "743-同济大学",
        "744": "744-上海理工大学",
        "745": "745-杭州南站",
        "746": "746-邵逸夫医院",
        "747": "747-附属儿童医院",
        "748": "748-图书馆",
        "749": "749-大罗山",
        "750": "750-阿里巴巴",
        "751": "751-武林广场"
    }
    
    参数4
    const obj = {}
    
    运行此函数
    function findDifferentData(oldArr, newArr, dictionary, obj) {
        let newItem = [];
        let oldItem = [];
        // 删除情况
        if (oldArr.length > newArr.length) {
            for (let i = 0; i < oldArr.length; i++) {
                if (!newArr[i]) {
                    newItem = newArr[i];
                    oldItem = oldArr[i];
                }
            }
            Object.assign(obj, {
                status: '删除',
                beforeData: renderAccordingDictionary(dictionary, oldItem),
                afterData: !!renderAccordingDictionary(dictionary, newItem) && !!renderAccordingDictionary(
                    dictionary,
                    newItem
                ) || '已删'
            });
            console.log(obj)
        } else if (oldArr.length < newArr.length) { // 新增情况
            Object.assign(obj, {
                status: '新增',
                beforeData: '之前无该数据',
                afterData: renderAccordingDictionary(dictionary, newArr[newArr.length - 1])
            })
            console.log(obj)
        } else {
            for (let i = 0; i < newArr.length; i++) {
                if (newArr[i].length !== oldArr[i].length) {
                    newItem = newArr[i];
                    oldItem = oldArr[i];
                }
            }
            Object.assign(obj, {
                status: '更新',
                beforeData: renderAccordingDictionary(dictionary, oldItem),
                afterData: renderAccordingDictionary(dictionary, newItem)
            })
            console.log(obj)
        }
    }
    

    相关文章

      网友评论

          本文标题:比较数组-比较两个数组是 删除/新增/更新

          本文链接:https://www.haomeiwen.com/subject/nyvkhftx.html