javascript - 如何将嵌套对象数组转换为javascript中的对象?

标签 javascript arrays reactjs object functional-programming

我有对象的嵌套数组的数组。我只想从数据中获取 Permission 对象,并且需要将数据数组转换为permission 对象。

 "data":[
       {
          "Book":[
             {
                "label":"Can View",
                "value":"can_view"
             },
             {
                "label":"Can Create",
                "value":"can_create"
             },

          ]
       },
       {
          "Articles":[
             {
                "label":"Can View",
                "value":"can_view"
             },
         ]
       },
       {
          "Journals":[

             {
                "label":"Can Upload",
                "value":"can_upload"
             },
             {
                "label":"Can Download",
                "value":"can_download"
             }
          ]
       },

       {
          "Permission":[
             {
                "label":"Can View",
                "value":"can_view"
             },
             {
                "label":"Can Create",
                "value":"can_create"
             }
          ]
       }
    ]

我正在尝试从我的数据对象列表中获取权限对象。我正在使用过滤器方法来获取 Permission 数组并想要转换权限对象,但我得到了嵌套数组。哪里有问题?

let dataPer = data.permissions.filter(item=>item.Permission).map(item=>item.Permission)

console.log(dataPer)

我接受的输出是:

 let output= {

       Permission:{
         can_view:"can_view",
       can_create:"can_create"

       }
   }   

最佳答案

那么你可以尝试这样的事情:

 let data=[
       {
          "Book":[
             {
                "label":"Can View",
                "value":"can_view"
             },
             {
                "label":"Can Create",
                "value":"can_create"
             }
          ]
       },
       {
          "Articles":[
             {
                "label":"Can View",
                "value":"can_view"
             }
         ]
       },
       {
          "Journals":[

             {
                "label":"Can Upload",
                "value":"can_upload"
             },
             {
                "label":"Can Download",
                "value":"can_download"
             }
          ]
       },

       {
          "Permission":[
             {
                "label":"Can View",
                "value":"can_view"
             },
             {
                "label":"Can Create",
                "value":"can_create"
             }
          ]
       }
    ];
let myPermissionObjects = [];
let permissionConvert = ()=>{
for(let current in data)
    for(let currentObject in data[current])
      for(let currentResult in data[current][currentObject])
        myPermissionObjects.push(data[current][currentObject][currentResult]);

};
permissionConvert();
console.log(myPermissionObjects);

如果我正确理解你的问题

仅适用于对象权限:

let data=[
           {
              "Book":[
                 {
                    "label":"Can View",
                    "value":"can_view"
                 },
                 {
                    "label":"Can Create",
                    "value":"can_create"
                 }
              ]
           },
           {
              "Articles":[
                 {
                    "label":"Can View",
                    "value":"can_view"
                 }
             ]
           },
           {
              "Journals":[

                 {
                    "label":"Can Upload",
                    "value":"can_upload"
                 },
                 {
                    "label":"Can Download",
                    "value":"can_download"
                 }
              ]
           },

           {
              "Permission":[
                 {
                    "label":"Can View",
                    "value":"can_view"
                 },
                 {
                    "label":"Can Create",
                    "value":"can_create"
                 }
              ]
           }
        ];
    let myPermissionObjects = [];
    let permissionConvert = ()=>{
    for(let current in data)
        for(let currentObject in data[current].Permission)
          myPermissionObjects.push( data[current].Permission[currentObject]);


    };
    permissionConvert();
    console.log(myPermissionObjects);
    let onePermission = [];
    for(let next in myPermissionObjects)
    {
    onePermission["Permission"]=myPermissionObjects[next];
    console.log(myPermissionObjects[next]);
    }

关于javascript - 如何将嵌套对象数组转换为javascript中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60869234/

相关文章:

mysql - 如何在 Node 中链接彼此依赖的sql查询

c - C 中数组的模除法,Malloc(免费)

reactjs - 有没有办法跳过对对象数组中最后一个对象的 yup 验证?

c++ - 从指针数组中删除元素 - C++

reactjs - typescript 将 setState 与用户输入 react

javascript - 必须通过单击 Javascript/ReactJs 中的按钮来发送电子邮件

javascript - 是否可以在另一个 GA 属性中记录 PDF 下载?

javascript - angular.element(ready) 函数在 Cordova 中调用两次

javascript - 找到控件的parent(),然后找到 ("a") JQuery

javascript - 长刻度标签在 plotly.js 图表中被 chop