簡體   English   中英

如何在JavaScript關聯數組中使用字符串“ watch”作為鍵?

[英]How can I use the string “watch” as a key in a JavaScript associative array?

我有一個這樣聲明的數組:

var dict = [];

當我這樣做時:

dict["watch"] = 0;

這個表情提醒NaN

alert (dict["watch"]);

我知道這是因為watch()是對象原型一部分的函數。 無論如何,我可以在數組中使用任何單詞作為鍵嗎?

我正在使用Firefox 3.6.6

您可以執行以下操作:

var dict =
    {
        "watch": 0
    };

alert(dict["watch"]);

關聯數組的簡寫*是花括號,而不是方括號:

var dict={};
dict["watch"] = 0;

或者簡單地:

var dict={ watch:0 };

* 從技術上講,javascript沒有“關聯數組”,而具有“對象”-但對於此特定目的,它們以有效的相同方式工作。

我找到了問題的根源(當然是在我問了問題之后5秒鍾):

我的代碼在分配這樣的值之前檢查dict中的鍵是否未定義或為null:

 if (dict[key] == null)
      dict[key] = 0;

但是,由於“監視”是對象原型的一部分,因此dict[key] == null永遠不會為真。

編輯:

但是,即使我這樣做:

if (typeof dict[word] == "function" || dict[word] == null)
    dict[word] = 0;

的價值

dict["watch"]

現在是function watch(){ native code }或類似的功能

得到它了:

用我的無限智慧,我在現已修復的代碼中的其他地方也犯了類似的錯誤。 感謝大家的幫助!

嘗試dict = {} []用於數組文字, {}用於對象文字,它們或多或少是散列。 由於您仍然使用方括號來建立索引,因此會造成混淆。

您在哪里執行代碼? 在Firefox 3.3.6,Chrome 5.0.375.99 beta,IE 8和Safari 5中,它為我警報0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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