js對象合并的4種方式與數(shù)組合并的4種方式
一、對象合并
1、拓展運算符(...)
ES6入門中是這樣說的:
對象的擴展運算符(...)用于取出參數(shù)對象的所有可遍歷屬性,拷貝到當前對象之中。
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() 方法用于將所有可枚舉屬性的值從一個或多個源對象分配到目標對象。它將返回目標對象。
用于對象合并,寫法如下:
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ù)用于將一個或多個對象的內容合并到目標對象。
$.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、關于Apply
使用Apply方法:這個方法是將數(shù)組各項添加到另一個數(shù)組當中,是一種改變原數(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']
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
uni-app使用uni-download和uni.saveFile下載保存文件遇到的問題及解決方法
這篇文章主要給大家介紹了關于uni-app使用uni-download和uni.saveFile下載保存文件遇到的問題及解決方法的相關資料,文中給出了詳細的代碼示例,需要的朋友可以參考下2024-01-01js apply/call/caller/callee/bind使用方法與區(qū)別分析
js apply/call/caller/callee/bind使用方法與區(qū)別分析,需要的朋友可以參考下。2009-10-10