我有一个对象:
blocks: [
{
type: 'animal',
data: { text: 'Bark bark' }
},
{
type: 'human',
data: { text: 'Speak speak' }
},
...
]
data:
命名不符合我的需要,我想将其重命名为 type
值(value)。所以它应该看起来像这样:
blocks: [
{
type: 'animal',
animal: { text: 'Bark bark' }
},
{
type: 'human',
human: { text: 'Speak speak' }
},
...
]
如何用很少的 JavaScript 代码实现这一点?我的解决方案确实有效,但似乎很愚蠢(特别是如果您考虑 10 多种不同类型的情况):
const blocks = [];
oldBlocks.map(block => {
const {type, data} = block;
blocks.push({
type: type,
animal: type === "animal" ? data : undefined,
human: type === "human" ? data : undefined,
....
});
});
最佳答案
使用方括号表示对象内部的表达式,允许您将变量作为键名称进行计算:
blocks.map(({type, data}) => ({ type, [type]: data }));
<小时/>
示例:
let blocks = [
{
type: 'animal',
data: { text: 'Bark bark' }
},
{
type: 'human',
data: { text: 'Speak speak' }
}
],
result = blocks.map(({type, data}) => ({ type, [type]: data }));
console.log(result);
关于javascript - 如何用变量重命名对象的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57513740/