一、js合并对象
- 使用Object.assign()
语法
Object.assign(target,...sources)
参数
target:目标对象
sources:源对象
let obj1 = {
a: 1
},
obj2 = {
b: 2
}
// obj1是目标对象,obj2则是要合并的对象,
Object.assign(obj1, obj2) // obj1={a:1, b:2} 改变原对象
//合并多个对象
Object.assign(obj1, obj2,obj3, ....)
// 也可以返回一个新对象,只要给目标对象传入一个空对象就行了
let assignObj = Object.assign({},obj1, obj2) // assignObj={a:1, b:2}
- 使用es6的展开运算符
es6的展开运算符还是非常强大实用的,改天再来介绍它
let obj1 = {
a: 1
},
obj2 = {
b: 2
}
obj1 = {a: 1, ...obj2} // obj1={a:1, b:2} 改变原对象
let obj3 = {...obj1, ...obj2} // obj3={a:1, b:2} 返回新对象
// 合并多个对象
let obj = {...obj1, ...obj2,...obj3, ...}
二、js合并数组
- 使用concat方法(会改变原数组)
语法
a.concat(b)
参数
a:目标数组
b:被合并的数组
let a = [1,2,3],
b = [4,5,6,7]
a.concat(b) // [1,2,3,4,5,6,7]
// 考虑性能优化,先去比较一下两个数组大小,用大数组合并小数组,会减少循环
if(a.length > b.length){
a.concat(b)
}else{
b.concat(2)
}
- 又到了使用es6展开运算的时候了
let a = [1,2,3],
b = [4,5,6,7]
let a = [1,2,3, ...b] // [1,2,3,4,5,6,7] 改变原数组
let c = [...a, ...b] // [1,2,3,4,5,6,7] 返回新数组
还有for循环和apply也可以做到,不过没上面方法简单暴力,就不介绍了。