如何解决如何将对象重组为特定格式的对象数组?
我有一个要重组的对象,如下面所需的输出所示。所需输出中的IngriId
只是Date.Now()
,我正在努力重新排列这对我来说似乎是不可能的。可以使用javascript来完成此操作,因为我对此很陌生并且发现很难实现?
输入:
const Shopping = {
"meatsOutput": [
{
"val": "Chicken breast"
}
],"spicesOutput": [
{
"amount": "½ tsp","val": "paprika"
}
],"dairyOutput": [
{
"amount": "1/2 Cup","val": "yogurt"
},{
"amount": "1/2 teaspoon","val": "heavy cream"
}
]
}
所需的输出:
const ShoppingList = [
{
"data": [{
"value": "Chicken breast","ingrId": "202237423fm16787",}],"name": "meatsOutput",},{
"data": [{
"amount": "½ tsp","value": "paprika","ingrId": "20223742381r787","name": "spicesOutput",{
"data": [{
"amount": "1/2 Cup","value": "yogurt","ingrId": "202237423816787",],"name": "dairyOutput",}
]
解决方法
使用Object.entries
,可以生成[key,value]
对数组,然后使用Array.prototype.map
,可以将该数组更改为所需的结果。
const input = {
"meatsOutput": [{
"val": "Chicken breast"
}],"spicesOutput": [{
"amount": "½ tsp","val": "paprika"
}],"dairyOutput": [{
"amount": "1/2 Cup","val": "yogurt"
},{
"amount": "1/2 teaspoon","val": "heavy cream"
}
]
};
const result = Object.entries(input).map(([key,value]) => ({
name: key,data: value.map((item) => ({
...item,ingrId: Date.now()
}))
}));
console.log(result);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。