js對象合并的4種方式與數(shù)組合并的4種方式
一、對象合并
1、拓展運算符(...)
ES6入門中是這樣說的:
對象的擴展運算符(...)用于取出參數(shù)對象的所有可遍歷屬性,拷貝到當(dāng)前對象之中。
let obj1 = {
? ? name: '陳偉停',
? ? gender: '男',
? ? hobby: '唱歌'
};
let obj2 = {
? ? name: '陳偉停',
? ? gender: '男',
? ? hobby: '跳舞',
? ? nationality: '中國'
};
?
let obj = {...obj1, ...obj2};
console.log(obj); ?// { name: '陳偉停', gender: '男', hobby: '跳舞', nationality: '中國' }由上面的代碼可以看出:
- 同名屬性:合并,并且后邊的(obj2)把前邊的(obj1)覆蓋。
- 不同名屬性:屬性值不變,只合并。
注:第一級是深拷貝,第二級開始都是淺拷貝。
2、Object.assign()
MDN上是這樣寫的:
Object.assign() 方法用于將所有可枚舉屬性的值從一個或多個源對象分配到目標(biāo)對象。它將返回目標(biāo)對象。
用于對象合并,寫法如下:
let obj = Object.assign({}, obj1, obj2);
console.log(obj); ?// { name: '陳偉停', gender: '男', hobby: '跳舞', nationality: '中國' }由上面的代碼可以看出,效果與法一相同。
注:第一級是深拷貝,第二級開始都是淺拷貝。
3、遞歸賦值
let obj = obj1;
for (var p in obj2){
? ? if(obj2.hasOwnProperty(p))
? ? obj[p] = obj2[p];
}
console.log(obj); ?// { name: '陳偉停', gender: '男', hobby: '跳舞', nationality: '中國' }由上面的代碼可以看出,效果與法一相同。 類似于直接賦值增加屬性
注:第一級是深拷貝,第二級開始都是淺拷貝
4、jquery中的extend()
jQuery.extend() 函數(shù)用于將一個或多個對象的內(nèi)容合并到目標(biāo)對象。
$.extend(obj1, obj2) ?// 淺拷貝 $.extend(true, obj1, obj2) ?// 深拷貝
二、數(shù)組合并
1、擴展操作符
使用ES6語法的拓展運算符:這個方法也是創(chuàng)建一個新數(shù)組
var newArray = [...array,...elements] console.log(newArray); // ["a", "b", 0, 1, 2]
2、使用array.concat()方法進行合并
使用concat方法:這個方法不是添加到現(xiàn)有數(shù)組,而是創(chuàng)建并返回一個新數(shù)組。
var array = ["a", "b"]; var elements = [0, 1, 2]; ? var newArray = array.concat(elements); console.log(array); //['a', 'b'] console.log(newArray);// ["a", "b", 0, 1, 2]
3、關(guān)于Apply
使用Apply方法:這個方法是將數(shù)組各項添加到另一個數(shù)組當(dāng)中,是一種改變原數(shù)組的方法
var array = ["a", "b"]; var elements = [0, 1, 2]; array.push.apply(array, elements); console.log(array); // ["a", "b", 0, 1, 2]
4、array.push()方法進行合并
const heroes = ['Batman'];
?
heroes.push('Superman');
?
heroes; // ['Batman', 'Superman']
const heroes = ['Batman', 'Superman'];
const villains = ['Joker', 'Bane'];
?
heroes.push(...villains);
?
heroes; // ['Batman', 'Superman', 'Joker', 'Bane']以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
uni-app使用uni-download和uni.saveFile下載保存文件遇到的問題及解決方法
這篇文章主要給大家介紹了關(guān)于uni-app使用uni-download和uni.saveFile下載保存文件遇到的問題及解決方法的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2024-01-01
js apply/call/caller/callee/bind使用方法與區(qū)別分析
js apply/call/caller/callee/bind使用方法與區(qū)別分析,需要的朋友可以參考下。2009-10-10

