JS

使用 Object.assign合并多个Object对象

笔记

Posted by Wason on June 25, 2021

使用 Object.assign合并多个Object对象

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,它将返回目标对象。

var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };
var obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1); // { a: 1, b: 2, c: 3 }, 注意目标对象自身也会改变。

实际问题中我是做了map处理,变成返回多个obj,所以想着如何合并多个object
但最后发现,其实直接定义个全局params,然后在map方法里依次加到params里就好了.就不用考虑合并多个obj了

e.g.
let params = {}
let formList = [{key:'a', value:'v0'},{key:'b', value:'v1'},{key:'c', value:'v2'}]
formList.forEach((item,index)=>{
    params[item.key] = item.value
})
console.log(params)  // {a: "v0", b: "v1", c: "v2"}

故上面的Object.assign 套用例子可以是

e.g.1 
let formList = [{'a':'v0'},{'b':'v1'},{'c':'v2'}]
let obj1 = Object.assign(formList[0], formList[1], formList[2])
console.log(obj1)  // {a: "v0", b: "v1", c: "v2"}
    
e.g.2
let params = {}
let formList = [{'a':'v0'},{'b':'v1'},{'c':'v2'}]
formList.forEach((item,index)=>{
    params[Object.keys(item)[0]] = Object.values(item)[0]
})
console.log(params) // {a: "v0", b: "v1", c: "v2"}