将复杂对象转换为数组

Posted

技术标签:

【中文标题】将复杂对象转换为数组【英文标题】:Transforming a complex object into an array 【发布时间】:2022-01-21 00:23:29 【问题描述】:

我正在使用来自 API 的数据创建一个 React 应用程序。响应数据是一个长而复杂的对象,看起来像这样:


    "Frozen Products": [
        
            "_id": "6181849285e8d8f86be2d9df",
            "name": "Peas (800g)",
            "category_id": "6181841060c425f76e57b603",
            "slug": "vegetables",
            "quantity": 16,
            "price": 
                "amount": 3.00
            ,
            "thumbnail":"URI ...",,
            "images": [
                "URI ...",
            ],
            "synonyms": [
                "Veggies"
            ],
        ,

//etc for many key/values inside this object ..
        


我需要访问的信息确实显示一个类别(在本例中为“冷冻产品”)及其下的所有产品名称和图像。

但我认为我需要通过它们的索引(示例数据 [0])而不是键名称循环访问每个键/值对,因为它们的键是由 API 动态创建的。那么我该如何将其更改为:


   [ "Frozen Products": [
        
            "_id": "6181849285e8d8f86be2d9df",
            "name": "Peas (800g)",
            "category_id": "6181841060c425f76e57b603",
            "slug": "vegetables",
            "quantity": 16,
            "price": 
                "amount": 3.00
            ,
            "thumbnail":"URI ...",,
            "images": [
                "URI ...",
            ],
            "synonyms": [
                "Veggies"
            ],
        ,
   ]

【问题讨论】:

您的预期输出不是有效的 JSON。你能改正吗? 【参考方案1】:

我认为你需要这样的东西:

let data = 
    "Frozen Products": [
        
            "_id": "6181849285e8d8f86be2d9df",
            ...
        
    ],
    "Another Category": [...]    


let categories = Object.keys(data).map((key) => (categoryName: key, products: data[key]));

【讨论】:

【参考方案2】:

您可以使用 for in 迭代器遍历对象。 不管键名是什么

for(key in object) 
  let value = object[key];

【讨论】:

谢谢@SoroushBGM,你是对的。我已经做了 3 天的课堂作业,我的大脑被炸了。

以上是关于将复杂对象转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

让复杂Json数据和对象自由转换 --- Gson

在 Flutter 中将 JSON 转换为类似于 android 的 POJO(对象)

将对象数组的对象数组转换为对象的二维数组

如何将带有数组的对象转换为数组

ES6 将可迭代转换为数组时间复杂度

将平面对象数组转换为嵌套对象数组[重复]