![](/img/trans.png)
[英]How can I convert an array of key value pair objects into an associative array in javascript
[英]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.