大家好,我有以下code张照片

我想要转换的数据.

    const obj = {

     numbers: {
      label: "main numbers",
      pageTitle: "Numbers",
      key: "1",
        items: {
          firstNumber: {
            label: "first number",
            pageTitle: "first",
            key: "first"
           },
         secondNumber: {
            label: "second number",
            pageTitle: "second",
            key: "second"
           }  
        }
     },

    letters: {
      label: "main Letters",
      pageTitle: "Letters",
      key: "2",
         items: {
           firstLetter: {
            label: "first Letter",
            pageTitle: "first",
            key: "first"
         }
       }
     },

    signs: {
       label: "main sign",
       pageTitle: "Sign",
       key: "3"
    }
 };

在我的obj变量中,我还有另外3个对象

numbers个对象,具有items个属性,其中包括2个其他对象.

letters个具有items个属性的对象,其中只包括一个对象.

signs个对象.

我需要将我的obj转换为以下方式.

    [
      {
        label:"main numbers", 
        pageTitle:"Numbers", 
        key:1, 
        children: [{label,pageTitle,key},{label,pageTitle,key}] 
      },
      {
        label:"main Letters", 
        pageTitle:"Letters", 
        key:1, 
        children: [{label,pageTitle,key}] 
      },
     {
        label:"main sign", 
        pageTitle:"Sign", 
        key:1, 
        children: [] 
      },


    ]

对于该转换,我编写了以下代码.

    const transformedData = Object.values(obj).map((menuitem) => menuitem);

    const data = [];

    transformedData?.map((x) => {
      const newData = {};
      newData.label = x.label;
      newData.pageTitle = x.pageTitle;
      newData.key = x.key;
      newData.children = x?.Object?.values(items)?.map((el) => {
        newData.children.label = el.label;
        newData.children.pageTitle = el.pageTitle;
        newData.children.key = el.key;
      });
      data.push(newData);
    });

一切正常,但对于children,它打印的不是一个数组,而是undefined.

请帮我解决这个问题.

推荐答案

我为你的案子创建了一个函数.

    const convert = data =>
      Object.values(data)?.map(x => ({
       label: x.label,
       pageTitle :x.pageTitle ,
       key: x.pathname,
        children: x.items
          ? Object.values(x.items || {}).map(el => ({ label: el.label, 
            key:el.pathname,pageTitle:el.pageTitle  }))
         : null,
      }));

你可以用const items = convert(obj)来表示.

Javascript相关问答推荐

从mat—country—select获取整个Country数组

将自定义排序应用于角形数字数组

如何从URL获取令牌?

如何从html元素创建树 struct ?

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

material UI按钮组样式props 不反射

如何在Bootstrap中减少网格系统中单个div的宽度

在VS代码上一次设置多个变量格式

以编程方式聚焦的链接将被聚焦,但样式不适用

在JS中动态创建对象,并将其追加到HTML表中

expo 联系人:如果联系人的状态被拒绝,则请求访问联系人的权限

正则表达式以确定给定文本是否不只包含邮箱字符串

如何将对象推送到firestore数组?

如何使pdf.js上的文本呈现为可选?

带元素数组的Mongo聚合

元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但GET:Object.在Reaction项目中

Oracle APEX-如何调用Java脚本函数

从C#的Angular 来看,Java回调基础知识

无限循环,因为变量不断被重新声明为其原始值

使用EXCEL.js模块+node.js分隔标题行中的列