作为程序员一定要保持良好的睡眠,才能好编程

js中合并对象的方法

发布时间:2018-12-27

合并对象的方法


1、网上摘抄的深度合并

/**
 * 如果target(也就是FirstOBJ[key])存在,
 * 且是对象的话再去调用deepObjectMerge,
 * 否则就是FirstOBJ[key]里面没这个对象,需要与SecondOBJ[key]合并
 */
function deepObjectMerge(FirstOBJ, SecondOBJ) { // 深度合并对象
    for (var key in SecondOBJ) {
        FirstOBJ[key] = FirstOBJ[key] && FirstOBJ[key].toString() === "[object Object]" ?
            deepObjectMerge(FirstOBJ[key], SecondOBJ[key]) : FirstOBJ[key] = SecondOBJ[key];
    }
    return FirstOBJ;
}


2、jquery提供的合并方法


定义和用法

$.merge() 函数用于合并两个数组内容到第一个数组。


语法

$.merge( first, second )



参数 描述

first Array类型 第一个用于合并的数组,合并后将包含第二个数组的内容

second Array类型 第二个用于合并的数组,该数组不会被修改



实例

合并两个数组,修改第一个参数的内容


$(function () { 
    var arr = $.merge( [0,1,2], [2,3,4] );
    $("span").text(arr.join(", "));
})



其他扩展:

//合并两个数组,去重
var concat_ = function(arr1,arr2){
//不要直接使用var arr = arr1,这样arr只是arr1的一个引用,两者的修改会互相影响
var arr = arr1.concat();
//或者使用slice()复制,var arr = arr1.slice(0)
for(var i=0;i<arr2.length;i++){  
        arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;  
    }  
    return arr;  
}  
  
//合并多个数组,去重  
var concat = function(arr1,arr2,arr3){  
    if(arguments.length <= 1){  
        return false;  
    }  
    var concat_ = function(arr1,arr2){  
        var arr = arr1.concat();  
        for(var i=0;i<arr2.length;i++){  
            arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;  
        }  
        return arr;  
    }  
    var result = concat_(arr1,arr2);  
    for(var i=2;i<arguments.length;i++){  
        result = concat_(result,arguments[i]);  
    }  
    return result;  
}  
  
//合并多个数组,去重,排序  
var arr1 = [1,6,4,0];  
var arr2 = [8,20,7,4.5];  
var arr3 = [6,0,7,90,2];  
  
var concat = function(arr1,arr2,arr3){  
    if(arguments.length <= 1){  
        return false;  
    }  
    var concat_ = function(arr1,arr2){  
        var arr = arr1.concat();  
        for(var i=0;i<arr2.length;i++){  
            arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;  
        }  
        return arr;  
    }  
    var result = concat_(arr1,arr2);  
    for(var i=2;i<arguments.length;i++){  
        result = concat_(result,arguments[i]);  
    }  
    //排序  
    function sortNumber(a,b){  
        return a - b;  
    }  
    return result.sort(sortNumber);  
}