Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将对象中的Javascript嵌套对象更改为索引数组?_Javascript_Arrays_Object - Fatal编程技术网

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

如何将对象中的Javascript嵌套对象更改为索引数组?,javascript,arrays,object,Javascript,Arrays,Object,我刚刚开始开发,所以需要一些对象方面的帮助。我试着做一个for循环,并将值推送到一个数组中。问题在于,它将所有键/值作为一个索引推送,而不是单独索引每个键/值。我正在使用一个键/值对象,如下所示: var obj = { "application": { "create": "false", "read": "true", "update": "true", "delete": "false" }, "connection": {

我刚刚开始开发,所以需要一些对象方面的帮助。我试着做一个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

感谢您的帮助。

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

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

array = ["application", "connection"]

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

您可以添加一个额外的字段
key
来存储对象
obj
的键。这将生成对象的
数组

var obj={
“申请”:{
“创建”:“假”,
“读取”:“正确”,
“更新”:“正确”,
“删除”:“假”
},
“联系”:{
“创建”:“假”,
“读取”:“正确”,
“更新”:“正确”,
“删除”:“假”
}
}
变量键=对象键(obj)
var arr=[]
键。映射(功能(键,i){
arr[i]=obj[key]
arr[i].key=key
})
console.log(arr[0].key)
console.log(arr[0]。创建)

console.log(arr[1].key)
根据您预期的结果,看起来您希望将对象的第一级转换为数组单元格

这可以做到:

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方法来执行此操作。

您可以迭代键,并使用内部对象的子对象组合一个新数组

var obj={application:{create:“false”,read:“true”,update:“true”,delete:“false”},连接:{create:“false”,read:“true”,update:“true”,delete:“false”},
数组=对象.keys(obj).map(函数(k){
返回[k].concat(Object.keys(obj[k]).map(函数(kk){
返回obj[k][kk];
}));
});

console.log(数组)obj
?你是对的,我忘记设置了,我更新了示例。谢谢尼娜。这个索引-但是,我仍然需要保留键(应用程序和连接)。控制台日志正在打印[0]对象。请在问题中添加所需的完整结果。在编写时,它不是有效的javascript。