这样做
var x = new Array();
x['length']=5;
将使x成为5个未定义项的数组,但实际上我希望将值'5'存储在键'length'中。
这可能吗?
答案 0 :(得分:5)
在javascript数组中没有键。您正在寻找物品:
var x = {}
x.length = 5;
答案 1 :(得分:1)
我必须解析包含许多单词的文件并存储每个单词的出现次数
使用对象,并将单词设为键。您不存储顺序/有序数据,因此不应使用数组。
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;
}
答案 2 :(得分:0)
如果你想这样做,你最好创建一个对象而不是一个数组。这应该给你你想要的东西。
var x = {};
x['length'] = 5;
答案 3 :(得分:0)
您可以使用对象而不是数组来存储数据。但是如果你需要使用Arrays(你可能需要使用它们的功能),你可能会削弱这些单词并将它们存储为数组键。
使用某种简单的规则来绕过所有可能的关键字。例如,使用“_”字符为所有数组键添加前缀。通过这种方式,您可以始终从键中恢复原始单词,只需删除它们的第一个字符,并确保您没有引用Array对象的任何特定属性(如length属性)。
答案 4 :(得分:0)
您可以使用两种不同的语法在javascript对象上调用方法。熟悉的'dot'语法与parens调用方法和方括号语法。您可以使用语法myObj["methodname"](args)
在javascript对象上“调用”方法。当您想要使用字符串动态构造方法名称时,这很方便。请记住,javascript中的对象非常类似于哈希表(字典),其中键表示属性和函数名称。如果键的值包含一个函数,则可以调用它(使用括号)。
在您的示例中,Array有一个名为“length”的方法。您无意中调用了它的setter(它将数组的长度设置为空值,即未定义)。
把这一切放在一边,在这种情况下你真的想要一个哈希(关联数组)。数组是偏移索引数据结构。
像myObj = {}
这样的简单对象文字就足以为你提供哈希语义(同样,javascript中的对象就像哈希一样),然后你可以调用myObj.whatever = "some value"