javascript对象的多种合并方式详解

对象合并的多种方式(对于通过接口获取数据之后赋值给本地对象的时候极其有用)

第一种:手动赋值(很捞)

1

2

3

4

5

6

7

8

9

10

const obj1 = {

  name: "zs",

  age: 13,

};

const obj2 = {

  name: "ls",

  sex: "女",

};

obj1.name = obj2.name;

obj1.sex = obj2.sex;

这种方法时最简单的,但是日常项目中一个对象的属性是非常多的,如果还是用这种方法的话就会有点繁琐了

第二种:扩展运算符

1

2

3

4

5

6

7

8

9

10

11

const obj1 = {

  name: "zs",

  age: 13,

};

const obj2 = {

  name: "ls",

  sex: "女",

};

const newObj = { ...obj1, ...obj2 };

console.log(newObj === obj1); //false

console.log(newObj === obj2); //false

通过扩展运算符的特性可以快速的进行对象的合并,缺点就是需要用一个新的变量来接收

第三种:Object.assign() (最推荐)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

const obj1 = {

  name: "zs",

  age: 13,

};

const obj2 = {

  name: "ls",

  sex: "女",

};

const newObj = Object.assign(obj1, obj2);

console.log(newObj === obj1); //true

console.log(newObj === obj2); //false

console.log(newObj);

// {

//    name:'ls',

//    age:13,

//    sex:'女'

// }

Object.assign()方法可以接收一个目标对象和一个或者多个源对象作为参数,如果对象中有一样的属性,后面对象的属性会覆盖掉前面对象的那个属性。

其原理是将后面的对象通过 set 访问属性来添加进目标对象,所以最后返回的值其实就是第一个目对象,可以在目标对象上添加访问属性来见识覆盖过程

1

2

3

4

5

6

7

8

9

const obj1 = {

  set a(val) {

    console.log(val);

  },

};

Object.assign(obj1, { a: "tom" }, { a: "jerry" }, { a: "dog" });

//'tom'

//'jerry'

//'dog'

这个方法的使用场景有很多,都特别好用,例如:

1.vue 项目清空表单

日常有些同学清空表单可能会给 form 里面的数据一个一个的赋空值来进行表单的清空操作,其实效率是非常低的,但是如果使用 Object.assign()和$options 配合的话,效率就很高

1

2

3

4

5

6

7

8

// 日常

this.ruleForm.name='';

this.ruleForm.phone='';

this.ruleForm.imgUrl='';

this.ruleForm.des='';

...此处省略一万字

// 使用Object.assign和$options

Object.assign(this.ruleForm,this.$options.data)

Tips: $options 存储的是 Vue 实例的初始值,所以通过 Object.assign()覆盖值的特性,可以快速的做到重置表单,同理,如果是在进行表单数据修改的时候也能对页面的 ruleForm 进行快速的赋值

1

2

const { data } = await xxxApi.getList();

Object.assign(this.ruleForm, data);

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值