微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将对象重组为特定格式的对象数组?

如何解决如何将对象重组为特定格式的对象数组?

我有一个要重组的对象,如下面所需的输出所示。所需输出中的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 举报,一经查实,本站将立刻删除。