如何将对象 属性 的名称移动到 属性 值中
How to move an object property's name into a property value
我有想要转换的对象集合:
let A = [
{
institution: 19.5,
region: "EUROPE",
code: "Bosnia and Herzegovina",
code3: "BIH"
},
{
financial: 15.5,
region: "EUROPE",
code: "Bulgaria",
code3: "BGR"
},
{
institution: 15.9,
region: "EUROPE",
code: "Croatia",
code3: "HRV"
},
{
deflation: 40.6,
region: "EUROPE",
code: "Cyprus",
code3: "CYP"
}
]
我最后想要的是:
B = [
{
name: "institution",
value: 19.5,
region: "EUROPE",
code: "Bosnia and Herzegovina",
code3: "BIH"
},
{
name: "financial",
value: 15.5,
region: "EUROPE",
code: "Bulgaria",
code3: "BGR"
},
{
name: "institution",
value: 15.9,
region: "EUROPE",
code: "Croatia",
code3: "HRV"
},
{
name: "deflation",
value: 40.6,
region: "EUROPE",
code: "Cyprus",
code3: "CYP"
}
]
我已经用下面的代码让它工作了,但我想知道是否有更优雅的方法来做到这一点?
A.forEach(e => {
e["name"] = Object.keys(e)[0]
e["value"] = Object.values(e)[0]
delete e[Object.keys(e)[0]];
})
Object.keys()
returns 一个数组,但你没有这样对待它。
如果您知道只有一个未知的 属性 名称需要转置,并且您知道所有其他 属性 名称,您可以 de-structure 使用已知属性的对象和 ...rest
并使用 Object.entries() 设置名称和值
let A=[{institution: 19.5, region: "EUROPE", code: "Bosnia and Herzegovina", code3: "BIH"},
{financial: 15.5, region: "EUROPE", code: "Bulgaria", code3: "BGR"},
{institution: 15.9, region: "EUROPE", code: "Croatia", code3: "HRV"},
{deflation: 40.6, region: "EUROPE", code: "Cyprus", code3: "CYP"}]
let res = A.map(({region, code, code3, ...rest})=>{
const [name, value] = Object.entries(rest)[0]
return { name, value, region, code, code3 }
})
console.log(res)
我有想要转换的对象集合:
let A = [
{
institution: 19.5,
region: "EUROPE",
code: "Bosnia and Herzegovina",
code3: "BIH"
},
{
financial: 15.5,
region: "EUROPE",
code: "Bulgaria",
code3: "BGR"
},
{
institution: 15.9,
region: "EUROPE",
code: "Croatia",
code3: "HRV"
},
{
deflation: 40.6,
region: "EUROPE",
code: "Cyprus",
code3: "CYP"
}
]
我最后想要的是:
B = [
{
name: "institution",
value: 19.5,
region: "EUROPE",
code: "Bosnia and Herzegovina",
code3: "BIH"
},
{
name: "financial",
value: 15.5,
region: "EUROPE",
code: "Bulgaria",
code3: "BGR"
},
{
name: "institution",
value: 15.9,
region: "EUROPE",
code: "Croatia",
code3: "HRV"
},
{
name: "deflation",
value: 40.6,
region: "EUROPE",
code: "Cyprus",
code3: "CYP"
}
]
我已经用下面的代码让它工作了,但我想知道是否有更优雅的方法来做到这一点?
A.forEach(e => {
e["name"] = Object.keys(e)[0]
e["value"] = Object.values(e)[0]
delete e[Object.keys(e)[0]];
})
Object.keys()
returns 一个数组,但你没有这样对待它。
如果您知道只有一个未知的 属性 名称需要转置,并且您知道所有其他 属性 名称,您可以 de-structure 使用已知属性的对象和 ...rest
并使用 Object.entries() 设置名称和值
let A=[{institution: 19.5, region: "EUROPE", code: "Bosnia and Herzegovina", code3: "BIH"},
{financial: 15.5, region: "EUROPE", code: "Bulgaria", code3: "BGR"},
{institution: 15.9, region: "EUROPE", code: "Croatia", code3: "HRV"},
{deflation: 40.6, region: "EUROPE", code: "Cyprus", code3: "CYP"}]
let res = A.map(({region, code, code3, ...rest})=>{
const [name, value] = Object.entries(rest)[0]
return { name, value, region, code, code3 }
})
console.log(res)