javascript對象的多種合并方式詳解
對象合并的多種方式(對于通過接口獲取數(shù)據(jù)之后賦值給本地對象的時(shí)候極其有用)
第一種:手動(dòng)賦值(很撈)
const obj1 = {
name: "zs",
age: 13,
};
const obj2 = {
name: "ls",
sex: "女",
};
obj1.name = obj2.name;
obj1.sex = obj2.sex;
這種方法時(shí)最簡單的,但是日常項(xiàng)目中一個(gè)對象的屬性是非常多的,如果還是用這種方法的話就會(huì)有點(diǎn)繁瑣了
第二種:擴(kuò)展運(yùn)算符
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
通過擴(kuò)展運(yùn)算符的特性可以快速的進(jìn)行對象的合并,缺點(diǎn)就是需要用一個(gè)新的變量來接收
第三種:Object.assign() (最推薦)
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()方法可以接收一個(gè)目標(biāo)對象和一個(gè)或者多個(gè)源對象作為參數(shù),如果對象中有一樣的屬性,后面對象的屬性會(huì)覆蓋掉前面對象的那個(gè)屬性。
其原理是將后面的對象通過 set 訪問屬性來添加進(jìn)目標(biāo)對象,所以最后返回的值其實(shí)就是第一個(gè)目對象,可以在目標(biāo)對象上添加訪問屬性來見識覆蓋過程
const obj1 = {
set a(val) {
console.log(val);
},
};
Object.assign(obj1, { a: "tom" }, { a: "jerry" }, { a: "dog" });
//'tom'
//'jerry'
//'dog'
這個(gè)方法的使用場景有很多,都特別好用,例如:
1.vue 項(xiàng)目清空表單
日常有些同學(xué)清空表單可能會(huì)給 form 里面的數(shù)據(jù)一個(gè)一個(gè)的賦空值來進(jìn)行表單的清空操作,其實(shí)效率是非常低的,但是如果使用 Object.assign()和$options 配合的話,效率就很高
// 日常 this.ruleForm.name=''; this.ruleForm.phone=''; this.ruleForm.imgUrl=''; this.ruleForm.des=''; ...此處省略一萬字 // 使用Object.assign和$options Object.assign(this.ruleForm,this.$options.data)
Tips: $options 存儲(chǔ)的是 Vue 實(shí)例的初始值,所以通過 Object.assign()覆蓋值的特性,可以快速的做到重置表單,同理,如果是在進(jìn)行表單數(shù)據(jù)修改的時(shí)候也能對頁面的 ruleForm 進(jìn)行快速的賦值
const { data } = await xxxApi.getList();
Object.assign(this.ruleForm, data);
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
如何使用wheelnav.js構(gòu)建酷炫的動(dòng)態(tài)導(dǎo)航菜單
本文主要介紹一種基于SVG的web動(dòng)態(tài)導(dǎo)航組件,通過這個(gè)組件可以實(shí)現(xiàn)很多豐富酷炫的效果,首先介紹這款wheelnav.js的相關(guān)知識,然后結(jié)合代碼講解如何在html頁面中創(chuàng)建其對象,接著講解wheelnav的一些屬性和方法,最后給出基于wheelnav的實(shí)際成果,喜歡的朋友一起學(xué)習(xí)吧2024-06-06
JS實(shí)現(xiàn)設(shè)置ff與ie元素絕對位置的方法
這篇文章主要介紹了JS實(shí)現(xiàn)設(shè)置ff與ie元素絕對位置的方法,涉及JavaScript針對頁面元素及元素屬性的相關(guān)操作技巧,需要的朋友可以參考下2016-03-03
微信小程序websocket實(shí)現(xiàn)聊天功能
這篇文章主要為大家詳細(xì)介紹了微信小程序websocket實(shí)現(xiàn)聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
如何用js將blob為pcm格式轉(zhuǎn)換為MP3格式
要將PCM文件轉(zhuǎn)換為MP3文件,您可以使用Js實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于如何用js將blob為pcm格式轉(zhuǎn)換為MP3格式的相關(guān)資料,需要的朋友可以參考下2023-11-11

