首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我不知道索引,如何遍历二维数组?

如果我不知道索引,如何遍历二维数组?
EN

Stack Overflow用户
提问于 2017-03-16 06:53:06
回答 2查看 53关注 0票数 0

我的数组看起来像这样:

代码语言:javascript
复制
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,因为它会使用整数索引。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-16 07:01:40

您混淆了数组(最适合整数索引属性)和对象(设计为使用任何有效字符串作为属性名)。对象有时被称为“关联数组”,这使得区别有点混乱。

您应该使用对象文字简写来初始化permissions变量,而不是使用new Array()。然后,您可以使用Object.keys获取用于创建对象的键的列表,并对键-值对执行某些操作:

代码语言:javascript
复制
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?"

票数 3
EN

Stack Overflow用户

发布于 2017-03-16 07:03:10

我会使用object来存储它。

代码语言:javascript
复制
var permissions = {};
permissions['role-1'] = permissions['role-1'] || {};
permissions['role-1']['permission-1'] = "perm1";
permissions['role-1']['permission-3'] = "perm3";

然后,您可以遍历keys

代码语言:javascript
复制
for(var key in permissions)
   console.log(permissions[key]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42822227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档