簡體   English   中英

將json對象轉換為數組

[英]Converting json object to an array

如何使用lodash或 javascript 轉換以下lodash

 [
  {
    "roleId": "1",
    "name": "Superadmin"
    "permissions": [
      {
        "permissionId": "1",
        "action": "Remove"
      }
    ]
  },
  "id": "2",
  "name": "Administrator",
  "permissions": [
    {
      "permissionId": "1",
      "action": "Remove"
    },
    {
      "permissionId": "2",
      "action": "Create"
    },
    {
      "permissionId": "3",
      "action": "Read"
    }
  ]
]

對此:

{
   Superadmin: ['Remove'],
   Administrator: ['Remove', 'Create', 'Read']
}

帶有Array#forEachArray#map提案。

 var array = [{ "roleId": "1", "name": "Superadmin", "permissions": [{ "permissionId": "1", "action": "Remove" }] }, { "id": "2", "name": "Administrator", "permissions": [{ "permissionId": "1", "action": "Remove" }, { "permissionId": "2", "action": "Create" }, { "permissionId": "3", "action": "Read" }] }], object = {}; array.forEach(function (a) { object[a.name] = a.permissions.map(function (b) { return b.action; }); }); document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');

您可以使用reducemap

var temp =  [{
    "roleId": "1",
    "name": "Superadmin",
    "permissions": [{
        "permissionId": "1",
        "action": "Remove"
    }]
 }, {
    "id": "2",
    "name": "Administrator",
    "permissions": [{
        "permissionId": "1",
        "action": "Remove"
    }, {
        "permissionId": "2",
        "action": "Create"
    }, {
        "permissionId": "3",
        "action": "Read"
    }]
 }]

temp.reduce((result,obj)=>{
  result[obj.name] = obj.permissions.map(x=>x.action)
  return result;
},{});

從評論中看到格式化和有效的 json,這里有一些你可以使用的東西。

var arr = [{
    "roleId": "1",
    "name": "Superadmin",
    "permissions": [{
        "permissionId": "1",
        "action": "Remove"
    }]
}, {
    "id": "2",
    "name": "Administrator",
    "permissions": [{
        "permissionId": "1",
        "action": "Remove"
    }, {
        "permissionId": "2",
        "action": "Create"
    }, {
        "permissionId": "3",
        "action": "Read"
    }]
}];

var newArray = arr.map(function(obj){ 
  var rObj = {};
  rObj[obj.name] = obj.permissions.map(function(childObj){
     return childObj.action;       
  });
  return rObj;
});

console.log(newArray);

https://jsfiddle.net/daze5a4c/1/

var json = [{
  "roleId": "1",
  "name": "Superadmin",
  "permissions": [{
    "permissionId": "1",
    "action": "Remove"
  }]
}, {
  "roleId": "2",
  "name": "Administrator",
  "permissions": [{
    "permissionId": "1",
    "action": "Remove"
  }, {
    "permissionId": "2",
    "action": "Create"
  }, {
    "permissionId": "3",
    "action": "Read"
  }]
}];

var roles = {};

json.forEach(function(obj) {
  var actions = [];
  obj.permissions.forEach(function(permission) {
    actions.push(permission.action);
  });
  roles[obj.name] = actions;
});

console.log(roles);

這正是您想要的。 只需遍歷 JSON 對象並獲取將它們存儲在另一個對象(角色)中所需的屬性。

輸出:

{
   Superadmin: ['Remove'],
   Administrator: ['Remove', 'Create', 'Read']
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM