在js中合并对象并保留键

时间:2020-04-10 06:56:26

标签: javascript

我有2个对象。

const filters = {  name: "NAME" };
const pages = { sort: "SORT" };

需要将它们组合在一起,但结果应类似于

{ 
   filters: {  name: "NAME" }
   pages:  {sort: "SORT"}
}

使用concat或传播操作符

{
   name: "NAME",
   sort: "SORT"
}

如何组合它们并保留键(过滤器,页面)?

2 个答案:

答案 0 :(得分:2)

看不到你的意思,像魅力一样工作:

const a = { filters: {  name: "NAME" }};
const b = {pages:  {sort: "SORT"}};
const x = {...a,...b}
console.log(x);

答案 1 :(得分:1)

您只需要将变量filterspages包装在{}内,例如:

const filters = {  name: "NAME" }
const pages = { sort: "SORT" }

let result = { ...{filters}, ...{pages} }
console.log(result)

请注意,在result内部,我们实际上正在创建一个键为filters的新对象,但是由于新对象的键和值相同,因此我们可以在此处使用对象简写语法喜欢:

const filters = {  name: "NAME" }

const obj1 = { filters: filters }
console.log( obj1 )

const obj2 = { filters }
console.log( obj2 )

您可以在上面的演示obj1obj2中看到完全相同的结果。因此我们可以使用:

{ ...{filters}, ...{pages} }

代替:

{ ...{ filters: filters }, ...{ pages: pages } }