这样做
var x = new Array();
x['length']=5;
将使 x 成为 5 个未定义项的数组,但我实际上希望将值 '5' 存储在键 'length' 处。
那可能吗?
这样做
var x = new Array();
x['length']=5;
将使 x 成为 5 个未定义项的数组,但我实际上希望将值 '5' 存储在键 'length' 处。
那可能吗?
在 javascript 数组中没有键。您正在寻找对象:
var x = {}
x.length = 5;
我必须解析一个包含许多单词的文件并存储每个单词的出现次数
使用一个对象,并让单词成为键。您没有存储顺序/有序数据,因此您不应该使用数组。
var word_count = {};
for (var i; i < words.length; i++) {
var word = words[i];
if (word_count[word]) {
word_count[word]++;
} else {
word_count[word] = 1;
}
如果你想这样做,你最好创建一个对象而不是一个数组。这应该给你你想要的。
var x = {};
x['length'] = 5;
您可以使用对象而不是数组来存储数据。但是如果你需要使用数组(你可能需要使用它们的功能),你可以削弱单词并将它们存储为数组键。
使用某种简单的规则来绕过所有可能的关键字。例如,在所有数组键前面加上“_”字符。这样,您始终可以从键中恢复原始单词,只需删除它们的第一个字符,并且您确定您没有引用 Array 对象的任何特定属性(如长度属性)。
您可以使用两种不同的语法调用 javascript 对象上的方法。熟悉的“点”语法,带括号来调用方法,以及方括号语法。您可以使用语法在 javascript 对象上“调用”方法myObj["methodname"](args)
。当您想使用字符串动态构造方法名称时,这很方便。请记住,javascript 中的对象非常类似于哈希表(字典),其中键表示属性和函数名称。如果键的值包含一个函数,则可以调用它(使用括号)。
在您的示例中,Array 有一个名为“length”的方法。您无意中调用了它的设置器(它将数组的长度设置为空值,即未定义)。
撇开这些不谈,在这种情况下,您确实需要一个哈希(关联数组)。数组是偏移索引的数据结构。
一个简单的对象字面myObj = {}
量就足以为您提供哈希语义(同样,javascript 中的对象已经像哈希一样),然后您可以调用myObj.whatever = "some value"