如果我不知道索引,我如何遍历2d数组

时间:2017-03-15 22:53:06

标签: javascript object

我的数组看起来像这样:

let captureOutput f x =
    let newOut = new IO.StringWriter()
    Console.SetOut(newOut)
    f x
    Console.SetOut(Console.Out)
    newOut.ToString()

我如何遍历这样的数组并遍历所有元素?我不能使用for循环,因为那会使用整数索引。

2 个答案:

答案 0 :(得分:3)

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

您应该使用对象文字简写来初始化new Array()变量,而不是使用permissions。然后,您可以使用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?"

答案 1 :(得分:0)

我会使用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]);