数组类型被选为数组值

Dyl*_*ers 4 javascript arrays tridion tridion-2011

我有一些简单的Javascript循环遍历项目数组(Tridion用户组)来检查用户是否是特定组的成员.

我可以轻松编写下面显示的问题(参见参考资料&& extensionGroup !== 'true'),但我想了解为什么isArray= true被计算为数组中的 - 任何想法?

下面的屏幕截图显示了extensionGroups已设置的值

var extensionGroups = ["NotEvenARealGroup", "Author", "ExampleGroupAfterOneUserIsActuallyIn"]; 
Run Code Online (Sandbox Code Playgroud)

但是将isArray值作为第4个值返回?

更新以显示图像更清晰

萤火虫 - 对象

Firebug  - 代码

Ry-*_*Ry- 7

for in用来迭代一个数组; 不要那样做.使用for(或forEach):

for(var i = 0; i < extensionGroups.length; i++) {
    var extensionGroup = extensionGroups[i];
    // ...
}
Run Code Online (Sandbox Code Playgroud)

失败的原因是因为for in用于在JavaScript中迭代对象的属性.以这种方式迭代数组意味着您将获得分配给它的任何其他内容,例如此属性或length.

如果你能够使用Array#forEach,这可能是最合适的:

extensionGroups.forEach(function(extensionGroup) {
    // ...
});
Run Code Online (Sandbox Code Playgroud)