如何将对象中的Javascript嵌套对象更改为索引数组?

时间:2016-09-30 15:51:21

标签: javascript arrays object

我对开发很新,所以需要一些对象的帮助。我尝试执行for循环并将值推送到数组中。问题在于它将所有键/值作为一个索引而不是分别索引每个键/值。我正在使用键/值对象,如下所示:

var obj = {
   "application": {
      "create": "false",
      "read": "true",
      "update": "true",
      "delete": "false"
   },
   "connection": {
      "create": "false",
      "read": "true",
      "update": "true",
      "delete": "false"
   }
}

我需要将每个密钥(应用程序和连接)编入索引 - 密钥必须是值。例如,以下内容将检索:

  obj[0] = application
  obj[0].create = false
  obj[1] = connection

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

您可以添加额外的字段key来存储对象obj的键。这会产生array个对象。



var obj = {
  "application": {
    "create": "false",
    "read": "true",
    "update": "true",
    "delete": "false"
  },
  "connection": {
    "create": "false",
    "read": "true",
    "update": "true",
    "delete": "false"
  }
}

var keys = Object.keys(obj)
var arr = []
keys.map(function(key, i) {
  arr[i] = obj[key]
  arr[i].key = key
})

console.log(arr[0].key)
console.log(arr[0].create)
console.log(arr[1].key)




答案 1 :(得分:0)

如果您希望对象的每个属性都推入一个数组,您可以像这样迭代对象内容:

for (var item in obj){
    /* item will equal the first property of obj, in this case: 'application' */
    array.push(item)
}

array = ["application", "connection"]

您可以在每个对象属性上使用相同的技术,将其子项索引到数组中。

答案 2 :(得分:0)

根据您的预期结果,您似乎希望将对象的第一级转换为数组单元格。

这样做:

var arr = [], i=0;
for (var key in obj) {
   arr[key] = obj[key] // For accessing via the property name for example e.g. application
   arr[i] = obj[key] // For index access for example obj[0]
   i++;
}

您也可以使用.map方法执行此操作。

答案 3 :(得分:0)

您可以迭代键并使用内部对象的子项为新数组进行编码。

var obj = { application: { create: "false", read: "true", update: "true", delete: "false" }, connection: { create: "false", read: "true", update: "true", delete: "false" } },
    array = Object.keys(obj).map(function (k) {
        return [k].concat(Object.keys(obj[k]).map(function (kk) {
            return obj[k][kk];
        }));
    });

console.log(array);