[英]Array type being picked up as array value
我有一些簡單的Javascript循環遍歷項目數組(Tridion用戶組)來檢查用戶是否是特定組的成員。
我可以輕松編寫下面顯示的問題(參見&& extensionGroup !== 'true'
),但我想了解為什么isArray
= true
被計為數組中的值 - 任何想法?
下面的屏幕截圖顯示已設置值extensionGroups
var extensionGroups = ["NotEvenARealGroup", "Author", "ExampleGroupAfterOneUserIsActuallyIn"];
但是將isArray
值作為第4個值返回?
更新以顯示圖像更清晰
您正在使用for in
遍歷數組; 不要那樣做。 for
(或forEach
):
for(var i = 0; i < extensionGroups.length; i++) {
var extensionGroup = extensionGroups[i];
// ...
}
失敗的原因是因為for in
用於在JavaScript中迭代對象的屬性。 以這種方式迭代數組意味着您將獲得分配給它的任何其他內容,例如此屬性或length
。
如果你能夠使用Array#forEach
,這可能是最合適的:
extensionGroups.forEach(function(extensionGroup) {
// ...
});
For..in
技術上講, For..in
,不會迭代值。 它遍歷屬性名稱。 在數組中,值ARE屬性,在引擎蓋下。 所以,當你用for..in
迭代它們時,你會得到像這樣的時髦的東西。
這突出了我的下一點: 不要使用for..in
。 不要將它用於數組 - 不要將它用於任何東西,真的。 好的 - 也許這有點太過分了。 怎么樣:如果你覺得需要使用for..in
,那么在你做之前要認真考慮是否合理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.