我的数组看起来像这样:
var permissions = new Array();
permissions['role-1'] = new Array();
permissions['role-1']['permission-1'] = "perm1";
permissions['role-1']['permission-3'] = "perm3";
permissions['role-1']['permission-5'] = "perm5";
permissions['role-2']['permission-1'] = "perm1";
permissions['role-2']['permission-5'] = "perm5";如何遍历这样的数组并遍历所有元素?我不能使用for-loop,因为它会使用整数索引。
发布于 2017-03-16 07:01:40
您混淆了数组(最适合整数索引属性)和对象(设计为使用任何有效字符串作为属性名)。对象有时被称为“关联数组”,这使得区别有点混乱。
您应该使用对象文字简写来初始化permissions变量,而不是使用new Array()。然后,您可以使用Object.keys获取用于创建对象的键的列表,并对键-值对执行某些操作:
var permissions = {
'role-1': {
'permission-1': 'perm1',
'permission-3': 'perm3',
'permission-4': 'perm1',
'permission-5': 'perm5',
},
'role-2': {
'permission-1': 'perm1',
'permission-5': 'perm5'
}
}
var object = permissions['role-1']
Object.keys(object).forEach(function (key) {
// Do something with your key-value pairs
console.log(key, this[key])
}, object)
有关更多信息,请参阅"How do I loop through or enumerate a JavaScript object?"
发布于 2017-03-16 07:03:10
我会使用object来存储它。
var permissions = {};
permissions['role-1'] = permissions['role-1'] || {};
permissions['role-1']['permission-1'] = "perm1";
permissions['role-1']['permission-3'] = "perm3";然后,您可以遍历keys
for(var key in permissions)
console.log(permissions[key]);https://stackoverflow.com/questions/42822227
复制相似问题