Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将对象重新构造为特定格式的对象数组?_Javascript_Arrays_Sorting_Object - Fatal编程技术网

Javascript 如何将对象重新构造为特定格式的对象数组?

Javascript 如何将对象重新构造为特定格式的对象数组?,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我有一个我想要重组的对象,如下所示。所需输出中的IngriId只是Date。现在()我正在努力重新安排它,这对我来说似乎是不可能的。这可以用javascript完成吗,因为我对它非常陌生,而且我发现它很难实现 输入: const Shopping = { "meatsOutput": [ { "val": "Chicken breast" } ], "spices

我有一个我想要重组的对象,如下所示。所需输出中的
IngriId
只是
Date。现在()
我正在努力重新安排它,这对我来说似乎是不可能的。这可以用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
,可以生成
[键,值]
对数组,然后使用
array.prototype.map
,可以将该数组更改为所需的结果

const输入={
“肉汤”:[{
“val”:“鸡胸肉”
}],
“香料汤”:[{
“金额”:“½茶匙”,
“val”:“红辣椒”
}],
“奶牛场产量”:[{
“金额”:“1/2杯”,
“val”:“酸奶”
},
{
“量”:“1/2茶匙”,
“val”:“重奶油”
}
]
};
const result=Object.entries(input.map)([key,value])=>({
姓名:key,,
数据:value.map((项目)=>({
…项目,
英格丽德:日期。现在()
}))
}));

控制台日志(结果)
“这可以用javascript实现吗”-是的。
ingrId
来自哪里?@TKoL-正如OP-just
Date.现在()
当有两种成分时,
dairyOutput
的输出情况是什么?@LeGEC,不要提醒我。我去哥德堡的航班取消了。嗨,非常感谢你的回答。如果输入被包装在一个数组中,我将如何处理它?如果
input
是数组,您可以这样做<代码>常量结果=输入.map((项)=>对象.entries(项)…相同