Eu tenho um objeto:
blocks: [
{
type: 'animal',
data: { text: 'Bark bark' }
},
{
type: 'human',
data: { text: 'Speak speak' }
},
...
]
A data:
nomenclatura não atende às minhas necessidades e gostaria de renomeá-la com o type
valor. Portanto, deve ser assim:
blocks: [
{
type: 'animal',
animal: { text: 'Bark bark' }
},
{
type: 'human',
human: { text: 'Speak speak' }
},
...
]
Como posso conseguir isso com muito pouco código de javascript? Minha solução funciona, mas parece ser estúpida (especialmente se você considerar mais de 10 tipos diferentes):
const blocks = [];
oldBlocks.map(block => {
const {type, data} = block;
blocks.push({
type: type,
animal: type === "animal" ? data : undefined,
human: type === "human" ? data : undefined,
....
});
});
Use colchetes para denotar uma expressão dentro de um objeto, permitindo que você avalie variáveis como nomes de chave:
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);
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras