殿下丶达 2021-09-15 15:53 采纳率: 50%
浏览 71
已结题

数组添加问题求解,要同时判断是修改还是添加!

数组里存放的是对象,数据发生变化,会有新的对象过来,这时候数组就得判断是添加还是修改了,有id相同就修改,没有id相同的就添加到数组中去。
例如:


var arr1 = [{id:"3",name:"3"},{id:"1",name:"1"},{id:"2",name:"2"}];
   //发生数据变化,来了两次数据var a = {id:"2",name:"3"}      a ={id:"4",name:"4"}
   for (var i = 0; i < arr1.length; i++) {
    if(arr1[i].id==a.id){
     arr1[i].name = a.name;
    }else{
     //如果是第一次的数据过来,数组发生修改操作,会走两次else分支
     //如果是第二次的数据过来,数组发生添加操作,会走三次else分支
     //这里我写continue;或者arr1.push();都不对,请求大佬支援
    }
   }
  • 写回答

5条回答 默认 最新

  • CSDN专家-showbo 2021-09-15 16:18
    关注

    题主要的代码如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~

    
    
        function updateArray(arr1, item) {
            var index = arr1.findIndex(i => i.id == item.id);
            if (index == -1) arr1.push(item);//不存在压入
            else arr1[index] = item;//存在替换对应的项
        }
        var arr1 = [{ id: "3", name: "3" }, { id: "1", name: "1" }, { id: "2", name: "2" }];
        updateArray(arr1, { id: "2", name: "3" });
        console.log(JSON.stringify(arr1))//[{"id":"3","name":"3"},{"id":"1","name":"1"},{"id":"2","name":"3"}]
        updateArray(arr1, { id: "4", name: "4" });
        console.log(JSON.stringify(arr1))//[{"id":"3","name":"3"},{"id":"1","name":"1"},{"id":"2","name":"3"},{"id":"4","name":"4"}]
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月22日
  • 创建了问题 9月15日