我对开发很新,所以需要一些对象的帮助。我尝试执行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
感谢您的帮助。
答案 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);