前端对象合并方法

2019-07-16  本文已影响0人  摸爬打滚

假设需求: 设有对象 obj1 ,obj2,需要得到对象 obj3

let obj1 = { a :'a' }, obj2 = { b :'b' };  →  let obj3 = { a :'a', b :'b' }

一、JavaScript原生对象合并方法

二、JQuery对象合并方法

三、lodash对象合并方法

//下载loadsh
npm i --save lodash
//在项目中引入
let lodash = require("lodash");
//使用别名
window.lodash = window._ = lodash;
1、assign 方法。分配来源对象的可枚举属性到目标对象上。 来源对象的应用规则是从左到右,随后的下一个对象的属性会覆盖上一个对象的属性。
    
    注意: 这方法会改变 object本身
    
    参数:
         object (Object): 目标对象。
         [sources] (...Object): 来源对象。
         
    返回: (Object): 返回 object.
let obj1 = {a : 'a'};
let obj2 = {b : 'b'};
_.assign(obj1, obj2);
console.log(obj1);   //{a: "a", b: "b"}
2、extend 方法。这个方法类似 _.assign, 除了它会遍历并继承来源对象的属性。 

    注意: 这方法会改变 object本身
    
    参数:
         object (Object): 目标对象。
         [sources] (...Object): 来源对象。
         
    返回: (Object): 返回 object.
let obj3 = {a : 'a', c : 'c'};
let obj4 = {a :'q', b : 'b'};
_.extend(obj3, obj4);
console.log(obj3);   //{a: "q", c: "c", b: "b"}
console.log(obj4);   //{a: "q", b: "b"}
3、merge 方法。该方法类似_.assign, 除了它递归合并 sources 来源对象自身和继承的可枚举属性到 object 目标对象。如果目标值存在,被解析为undefined的sources 来源对象属性将被跳过。数组和普通对象会递归合并,其他对象和值会被直接分配覆盖。源对象从从左到右分配。后续的来源对象属性会覆盖之前分配的属性。

    注意: 这方法会改变 object本身
    
    参数:
         object (Object): 目标对象。
         [sources] (...Object): 来源对象。
         
    返回: (Object): 返回 object.
var object = {
  'a': [{ 'b': 2 }, { 'd': 4 }]
};
var other = {
  'a': [{ 'c': 3 }, { 'e': 5 }]
};
_.merge(object, other);  // {'a':[{b: 2, c: 3},{d: 4, e: 5}]}
上一篇下一篇

猜你喜欢

热点阅读