连接JS对象

Concatenate JS objects

本文关键字:对象 JS 连接      更新时间:2023-09-26

我有两个对象,如下

var data = {
        site_name: "my_site",
        page_id: "page_name",
        city: "New York",
        region_code: "NY",
        country_code: "US"
     },
     user_data = {
        user: "user_name",
        conversion_rate: 1.25
     };

我想把这两个对象连接起来,就像下面的一样

user_data = {
     user: "user_name",
     conversion_rate: 1.25,
     site_name: "my_site",
     page_id: "page_name",
     city: "New York",
     region_code: "NY",
     country_code: "US"
 };

我通过检查typeof user_data.key在第二个循环来完成。。。。它解决了我的问题,但我的好奇心是不以优化的方式循环。你的任何建议都将不胜感激。

您可以使用ES6:的Object.assign

var combined = Object.assign({}, data, user_data);

甚至:

Object.assign(user_data, data); // this will change `user_data`

如果您可以使用Babel,只需在对象上使用扩散运算符:

var data = {
   site_name: "my_site",
   page_id: "page_name",
   city: "New York",
   region_code: "NY",
   country_code: "US"
},
user_data = {
   user: "user_name",
   conversion_rate: 1.25
};
var combined = {
  ...data,
  ...user_data
};
console.log(combined);

请看演示。

"Spread属性"仍处于提案的第二阶段,但您可以将其与Babel一起使用
请参阅此处了解有关此功能的更多详细信息。

这将适用于所有浏览器上的示例:

data=JSON.stringify(data);
user_data=JSON.stringify(user_data);
user_data=user_data.replace("}",data.replace("{",","));
user_data=JSON.parse(user_data);