如何将对象数组重新排列为新的对象数组
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)
我有一组具有相同键的对象,示例:
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放在方括号[].
中动态创建一个属性keyconst 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)