我的数组看起来像这样:
let captureOutput f x =
let newOut = new IO.StringWriter()
Console.SetOut(newOut)
f x
Console.SetOut(Console.Out)
newOut.ToString()
我如何遍历这样的数组并遍历所有元素?我不能使用for循环,因为那会使用整数索引。
答案 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]);