Es6方式将对象键值转换为单个对象

Nik*_*iya 1 javascript arrays json ecmascript-6

我想将所有数据转换为一个对象,

let d = {
  "Coupon_Code": "code",
  "Coupon_Name": "namie",
  "Coupon_Desc": 1000,
  "selectedCity": [
    {
      "Coupon_City_Name": "xyz"
    }
  ],
  "selectedCategory": [
    {
      "Coupon_Category_Name": "Shopping"
    }
  ],
  "selectedCompany": [
    {
      "Coupon_Company_Name": "Shopper Stop"
    }
  ],
  "selectedState": [
    {
      "Coupon_State_Name": "abc"
    }
  ],
  "Coupon_Date": "2222-02-22",
}
Run Code Online (Sandbox Code Playgroud)

我试过像Object这样的方法keys,entries但是不要使用什么. 最终的输出应该是

let d = {
  Coupon_Code: "code",
  Coupon_Name: "namie",
  Coupon_Desc: 1000,
  Coupon_City_Name: "xyz",
  Coupon_Category_Name: "Shopping",
  Coupon_Company_Name: "Shopper Stop",
  Coupon_State_Name: "abc",
  Coupon_Date: "2222-02-22",
};
Run Code Online (Sandbox Code Playgroud)

使用Venila Js和Es6获得上述结果的最佳和最佳方式是什么

Ori*_*ori 7

减少原始对象的条目.如果条目的值是一个数组合并第一个元素,如果没有合并原始键和值.您可以使用对象扩展将属性合并到对象中:

const data = {"Coupon_Code":"code","Coupon_Name":"namie","Coupon_Desc":1000,"selectedCity":[{"Coupon_City_Name":"xyz"}],"selectedCategory":[{"Coupon_Category_Name":"Shopping"}],"selectedCompany":[{"Coupon_Company_Name":"Shopper Stop"}],"selectedState":[{"Coupon_State_Name":"abc"}],"Coupon_Date":"2222-02-22"};

const result = Object.entries(data)
  .reduce((r, [k, v]) => ({
    ...r,
    ...Array.isArray(v) ? v[0] : { [k]: v }
  }), {});

console.log(result);
Run Code Online (Sandbox Code Playgroud)