如何将对象数组重新排列为新的对象数组

How to rearrange array of objects to new array of Objects

我有一组具有相同键的对象,示例:

const data = [{name: "firstName", value: "John"},
{name: "lastName", value: "Smith"},
{name: "Number", value: "421-8686"}
]

但是我希望这些值成为键和值。示例:

const data = [{"firstName": "John"},
{"lastName": "Smith"},
{"Number": "421-8686"}]

我尝试了几种方法,但由于某种原因我失败了。我最近的尝试是:

   let newData = {}
    arrayData.forEach((item, index) => {
      let key = data.name
      let value = data.value
      newData[index] = { key: value} // this results in {"key": "John"} --> but i want {"firstName": "John"}

});

您可以使用 Object.fromEntries.

let data = [
  {name: "firstName", value: "John"},
  {name: "lastName", value: "Smith"},
  {name: "Number", value: "421-8686"}
]

data = data.map(info => Object.fromEntries([[info.name, info.value]]))

console.log(data)

    let data = [
       { name: "firstName", value: "John" },
       { name: "lastName", value: "Smith" },
       { name: "Number", value: "421-8686" },
    ];

    // map the data to required format.

    data = data.map((d) => {
       let o = {};
       o[d["name"]] = d["value"];
       return o;
    });
    
    console.log("data",data);
    
    

const data = [{name: "firstName", value: "John"},
{name: "lastName", value: "Smith"},
{name: "Number", value: "421-8686"}
]


/*const data = [{"firstName": "John"},
{"lastName": "Smith"},
{"Number": "421-8686"}]
*/
for(let i = 0;i < data.length;i++){
   
    data[i][data[i].name] = data[i].value  // creates new key value pair
    delete data[i].name                    // deletes old key
    delete data[i].value
    }
    

console.log(data)

我相信你应该得到如下结果,你想要什么。 当然,我确认状态。

const data = [{name: "firstName", value: "John"},
{name: "lastName", value: "Smith"},
{name: "Number", value: "421-8686"}
]

let newData = [];
data.forEach((item) => {
  let obj = {};
  obj[item.name] = item.value;
  newData.push( obj );
});
    
console.log(newData);

谢谢。

只需对您的代码稍作调整。 属性 必须动态创建。

在ES6中,我们可以通过将key放在方括号[].

中动态创建一个属性key

const data = [
  { name: "firstName", value: "John" },
  { name: "lastName", value: "Smith" },
  { name: "Number", value: "421-8686" }
];

let newData = [];
data.forEach((item, index) => newData[index] = {[item.name]: item.value});
console.log(newData)