How to merge two arrays of JSON objects - removing duplicates and preserving order in Javascript/jQuery?

后端 未结 4 701
自闭症患者
自闭症患者 2020-12-29 12:38

jsfiddle link: http://jsfiddle.net/vN6fn/1/

Assume I have these 2 objects:

var obj1 = { data: [ 
                      {id:1, commen         


        
4条回答
  •  渐次进展
    2020-12-29 13:11

    http://jsfiddle.net/J9EpT/

    function merge(one, two){
      if (!one.data) return {data:two.data};
      if (!two.data) return {data:one.data};
      var final = {data:one.data};
      // merge
      for(var i = 0 ; i < two.data.length;i++){
          var item = two.data[i];
          insert(item, final);
      }
      return final;
    }
    
    
    function insert(item, obj){
        var data = obj.data;
        var insertIndex = data.length;
        for(var i = 0; i < data.length; i++){
            if(item.id == data[i].id){
               // ignore duplicates
               insertIndex = -1;
               break;
            } else if(item.id < data[i].id){
               insertIndex = i;
               break;
            }
        }
        if(insertIndex == data.length){
            data.push(item);
        } else if(insertIndex != -1) {
            data.splice(insertIndex,0,item);
        }
    }
    
    var final = merge(obj1, obj2);
    

提交回复
热议问题