簡體   English   中英

數組類型被選為數組值

[英]Array type being picked up as array value

我有一些簡單的Javascript循環遍歷項目數組(Tridion用戶組)來檢查用戶是否是特定組的成員。

我可以輕松編寫下面顯示的問題(參見&& extensionGroup !== 'true' ),但我想了解為什么isArray = true被計為數組中的 - 任何想法?

下面的屏幕截圖顯示已設置值extensionGroups

var extensionGroups = ["NotEvenARealGroup", "Author", "ExampleGroupAfterOneUserIsActuallyIn"]; 

但是將isArray值作為第4個值返回?

更新以顯示圖像更清晰

螢火蟲 - 對象

Firebug  - 代碼

您正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM