我有一个对象数组,obj,如下所示:

{
    "root": [
        {
            "key": "mihome",
            "label": "home",
            "action": "url",
            "submenu": "none"
        },
        {
            "key": "signin",
            "label": "sign in",
            "action": "url",
            "submenu": "none"
        }
    ],
    "mainMenu": [
        {
            "key": "unito",
            "label": "unit o",
            "action": "url",
            "submenu": "none"
        },
        {
            "key": "unitt",
            "label": "unit t",
            "action": "url",
            "submenu": "none"
        }
    ]
}

我想使用对象映射在React JS中作为组件进行迭代,如下所示:

return (
    <div className='menud'>
        {obj["root"] !== undefined ?
            Object.entries(obj).map(([key, menuItems]) => 
            <MenuList menuArray={obj[key]} key={key} menuKey={key} pcbClick={handleItemClick} />)
            : null
        }
    </div>
);

这基本上是按照我的意愿工作的,只是我正在努力找出如何在映射每个对象时保留其键名,这需要传递对象数组而不是对象array.e、 g.现在,第一个将收到一个菜单栏props :

[
        {
            "key": "mihome",
            "label": "home",
            "action": "url",
            "submenu": "none"
        },
        {
            "key": "signin",
            "label": "sign in",
            "action": "url",
            "submenu": "none"
        }
    ],

鉴于我希望收到

{
root: [
        {
            "key": "mihome",
            "label": "home",
            "action": "url",
            "submenu": "none"
        },
        {
            "key": "signin",
            "label": "sign in",
            "action": "url",
            "submenu": "none"
        }
    ]
}

等进行迭代.我正在考虑使用JSON.字符串化并只分配键名和{字符,但这感觉像是添加了不必要的转换.

推荐答案

您可以这样做:

return (
    <div className='menud'>
        {obj["root"] !== undefined ?
            Object.entries(obj).map(([key, menuItems]) => 
            <MenuList menuArray={{[key]: menuItems}} key={key} menuKey={key} pcbClick={handleItemClick} />)
            : null
        }
    </div>
);

Javascript相关问答推荐

是什么原因导致此Angular 16电影应用程序中因类型错误而不存在属性?

我试图实现用户验证的reduxstore 和操作中出了什么问题?

我不知道为什么setwritten包装promise 不能像我预期的那样工作

docx.js:如何在客户端使用文档修补程序

在网页上添加谷歌亵渎词

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

使用ThreeJ渲染的形状具有抖动/模糊的边缘

如何在Angular17 APP中全局设置AXIOS

这个值总是返回未定义的-Reaction

有条件重定向到移动子域

类构造函数忽略Reaction Native中的可选字段,但在浏览器中按预期工作

为什么JPG图像不能在VITE中导入以进行react ?

Nextjs 13.4 Next-Auth 4.2登录(&Quot;凭据&,{});不工作

为什么当我更新数据库时,我的所有组件都重新呈现?

构建器模式与参数对象输入

在SuperBase JS客户端中寻址JSON数据

不协调嵌入图片

Chart.js Hover线条在鼠标离开时不会消失

错误400:当我试图在React中使用put方法时,该字段是必需的

为什么我的InDesign Java脚本不能完全工作?