为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript对象合并问题

JavaScript对象合并问题

慕姐4208626 2019-03-13 10:12:26
最后想要的结果希望是这个样子的。let obj = {title:{    text: 'PIE',    textStyle: {      color: '#cccccc',      fontSize:  45,      fontWeight: 'normal',      fontFamily: '华文细黑',    },    x: 'center',    y: 'center'}}就是b中的对象的值覆盖掉a中的。
查看完整描述

6 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

试试这个:var obj = $.extend(true, a, b);

语法:jQuery.extend( [deep ], target, object1 [, objectN ] )
深浅拷贝对应的参数就是[deep],是可选的,为true或false。默认情况是false(浅拷贝),并且false是不能够显示的写出来的。如果想写,只能写true(深拷贝)


查看完整回答
反对 回复 2019-03-15
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

原生js 写的


function merge (target) {

  for (let i = 1, j = arguments.length; i < j; i++) {

    let source = arguments[i] || {};

    for (let prop in source) {

      if (source.hasOwnProperty(prop)) {

        let value = source[prop];

        if(typeof value === "object" ){

          target[prop] = merge(target[prop]||{},value)

        }else {

          if (value !== undefined) {

            target[prop] = value;

          }

        }

      }

    }

  }

  return target;

};


merge(a,b)


查看完整回答
反对 回复 2019-03-15
?
RISEBY

TA贡献1856条经验 获得超5个赞

{...a,...b},望采纳


查看完整回答
反对 回复 2019-03-15
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

Object.assign(a, b) ES6新语法


查看完整回答
反对 回复 2019-03-15
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

var a = {

  title: {

    text: '饼图',

    textStyle: {

      color: '#ffffff',

      fontSize: 45,

      fontWeight: 'normal',

      fontFamily: '华文细黑'

    },

    x: 'center',

    y: 'center'

  }

}


var b = {

  title: {

    text: 'PIE',

    textStyle: {

      color: '#cccccc'

    }

  },

  test: 'test'

}


function merge(target, source) {

  for (key in source) {

    if (target.hasOwnProperty(key) && typeof target[key] === 'object') {

      merge(target[key], source[key])

    } else {

      target[key] = source[key]

    }

  }

}


merge(a, b)


console.log(a)


查看完整回答
反对 回复 2019-03-15
  • 6 回答
  • 0 关注
  • 490 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信