数组
使用object.assign
- Object.assign([], a, b)
let a = [1,2]
let b = [3,4]
let c = Object.assign([], a, b)
复制代码
值 | console.log() | a[1] = 6 | b[1] = 6 | c[1] = 5 |
a | [1, 2] | [1, 6] | [1, 2] | [1, 2] |
b | [3, 4] | [3, 4] | [3, 6] | [3, 4] |
c | [3, 4] | [3, 4] | [3, 4] | [3, 5] |
a的值被覆盖,分别改变a, b, c的值不会对其他值产生影响
2.Object.assign(a, b)
let a = [1,2]
let b = [3,4]
let c = Object.assign(a, b)
复制代码
值 | console.log() | a[1] = 6 | b[1] = 6 | c[1] = 5 |
a | [3, 4] | [3, 6] | [3, 4] | [3, 5] |
b | [3, 4] | [3, 4] | [3, 6] | [3, 4] |
c | [3, 4] | [3, 6] | [3, 4] | [3, 5] |
a的值被覆盖,改变a的值会同步影响c的值,改变b的值对a和c无影响,改变c的值会同步影响a的值
使用展开运算符...
- [...a, ...b]
let a = [1,2]
let b = [3,4]
let c = [...a, ...b]
复制代码
值 | console.log() | a[1] = 6 | b[1] = 6 | c[1] = 5 |
a | [1, 2] | [1, 6] | [1, 2] | [1, 2] |
b | [3, 4] | [3, 4] | [3, 6] | [3, 4] |
c | [1, 2, 3, 4] | [1, 2, 3, 4] | [1, 2, 3, 4] | [1, 5, 3, 4] |
a的值不会被覆盖,分别改变a, b, c的值不会对其他值产生影响
- [...[],...a, ...b]
let a = [1,2]
let b = [3,4]
let c = [...[],...a, ...b]
复制代码
值 | console.log() | a[1] = 6 | b[1] = 6 | c[1] = 5 |
a | [1, 2] | [1, 6] | [1, 2] | [1, 2] |
b | [3, 4] | [3, 4] | [3, 6] | [3, 4] |
c | [1, 2, 3, 4] | [1, 2, 3, 4] | [1, 2, 3, 4] | [1, 5, 3, 4] |
a的值不会被覆盖,分别改变a, b, c的值不会对其他值产生影响
对象
使用Object.assign
- Object.assign({}, a, b)
let a = { 1: 'aa', 2: 'bb' }
let b = { 1: 'cc', 4: 'dd' }
let c = Object.assign({}, a, b)
复制代码
值 | console.log() | a[1] = 'aaa' | b[1] = 'ccc' | c[1] = 'ccc' |
a | {1: "aa", 2: "bb"} | {1: "aaa", 2: "bb"} | {1: "aa", 2: "bb"} | {1: "aa", 2: "bb"} |
b | {1: "cc", 4: "dd"} | {1: "cc", 4: "dd"} | {1: "ccc", 4: "dd"} | {1: "cc", 4: "dd"} |
c | {1: "cc", 2: "bb", 4: "dd"} | {1: "cc", 2: "bb", 4: "dd"} | {1: "cc", 2: "bb", 4: "dd"} | {1: "ccc", 2: "bb", 4: "dd"} |
1.合并a,b到c时,key相同的属性会合并,且后面元素覆盖前面元素
2.分别改变a,b,c的值不会影响其他元素的值
- Object.assign(a, b)
let a = { 1: 'aa', 2: 'bb' }
let b = { 1: 'cc', 4: 'dd' }
let c = Object.assign(a, b)
复制代码
值 | console.log() | a[1] = 'aaa' | b[1] = 'ccc' | c[1] = 'ccc' |
a | {1: "cc", 2: "bb", 4: "dd"} | {1: "aaa", 2: "bb", 4: "dd"} | {1: "cc", 2: "bb", 4: "dd"} | {1: "ccc", 2: "bb", 4: "dd"} |
b | {1: "cc", 4: "dd"} | {1: "cc", 4: "dd"} | {1: "ccc", 4: "dd"} | {1: "cc", 4: "dd"} |
c | {1: "cc", 2: "bb", 4: "dd"} | {1: "aaa", 2: "bb", 4: "dd"} | {1: "cc", 2: "bb", 4: "dd"} | {1: "ccc", 2: "bb", 4: "dd"} |
1.合并a,b到c时,a的值同步变成c的值
2.改变a的值会同步影响c的值,改变c的值也会同步影响a的值,改变b的值对a,c的值无影响
使用展开运算符...
1.{...a, ...b}
let a = { 1: 'aa', 2: 'bb' }
let b = { 1: 'cc', 4: 'dd' }
let c = {...a, ...b}
复制代码
值 | console.log() | a[1] = 'aaa' | b[1] = 'ccc' | c[1] = 'ccc' |
a | {1: "aa", 2: "bb"} | {1: "aaa", 2: "bb"} | {1: "aa", 2: "bb"} | {1: "aa", 2: "bb"} |
b | {1: "cc", 4: "dd"} | {1: "cc", 4: "dd"} | {1: "ccc", 4: "dd"} | {1: "cc", 4: "dd"} |
c | {1: "cc", 2: "bb", 4: "dd"} | 1: "cc", 2: "bb", 4: "dd"} | {1: "cc", 2: "bb", 4: "dd"} | {1: "ccc", 2: "bb", 4: "dd"} |
1.合并a,b到c时,key相同的属性会合并,且后面元素覆盖前面元素
2.分别改变a,b,c的值不会影响其他元素的值
- {...{}, ...a, ...b}
let a = { 1: 'aa', 2: 'bb' }
let b = { 1: 'cc', 4: 'dd' }
let c = {...{}, ...a, ...b}
复制代码
值 | console.log() | a[1] = 'aaa' | b[1] = 'ccc' | c[1] = 'ccc' |
a | {1: "aa", 2: "bb"} | {1: "aaa", 2: "bb"} | {1: "aa", 2: "bb"} | {1: "aa", 2: "bb"} |
b | {1: "cc", 4: "dd"} | {1: "cc", 4: "dd"} | {1: "ccc", 4: "dd"} | {1: "cc", 4: "dd"} |
c | {1: "cc", 2: "bb", 4: "dd"} | {1: "cc", 2: "bb", 4: "dd"} | {1: "cc", 2: "bb", 4: "dd"} | {1: "ccc", 2: "bb", 4: "dd"} |
1.合并a,b到c时,key相同的属性会合并,且后面元素覆盖前面元素
2.分别改变a,b,c的值不会影响其他元素的值
作者:原始l
链接:https://juejin.cn/post/6971998812889940005
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。