很抱歉问一个noob问题,但是我有一个阵列:
MyArray["2cd"]="blah1";
MyArray["3cx"]="blah3";
MyArray["8cz"]="blah2";
字符串myStr="2cd";
然后我使用MyArray [myStr]来获取blah的值,如何获取我在对象/数组中访问的数字或者在这种情况下为0?
答案 0 :(得分:3)
如果我可以在两行之间阅读,听起来你在想你发布的代码:
MyArray["2cd"] = "blah1";
MyArray["3cx"] = "blah3";
MyArray["8cz"] = "blah2";
将自动变为:
MyArray[0] = MyArray["2cd"] = "blah1";
MyArray[1] = MyArray["3cx"] = "blah3";
MyArray[2] = MyArray["8cz"] = "blah2";
因此您可以通过以下两种方式获取字符串"blah1"
:
var foo = MyArray[0]; // sets foo to "blah1"
var bar = MyArray["2cd"] // also sets bar to "blah1"
但这不是JavaScript的工作方式。
您当然可以进行设置,以便您可以使用我的MyArray[0]
和MyArray["2cd"]
来获取相同的值,但您必须在我的示例中明确地执行此操作。
你没有提到的一件事是你如何声明MyArray
本身。是Array
还是Object
?也就是说,在您发布的代码之前,您是否创建了MyArray
:
var MyArray = {}; // or equivalently, var Array = new Object;
或:
var MyArray = []; // or equivalently, var Array = new Array;
第一个示例创建Object
,第二个示例创建Array
。
有点令人困惑的是,JavaScript同时具有这两种类型,在许多情况下,您可以在某种程度上互换使用。但是,当您在对象中使用任意(通常但不一定是非数字)键时,习惯使用Object
,如您的示例所示。相反,当您主要使用严格的数字索引时,习惯使用Array
。
事实上,JavaScript的Array
类型从Object
类型继承。 Array
只是一个Object
,还有一些额外的行为:
Array
还有其他方法,例如.push()
会将项目附加到数组中。
Array
具有.length
属性,当您使用.push()
或直接array[123]
分配添加元素时,或者当您删除元素时,该属性会自动更新.pop()
或其他方法。
Fabrício指出,JavaScript没有的是一个“关联数组”,其行为与您在其他语言中的行为类似。它有对象,它有数组(继承自对象),你必须按照自己的条件处理每一个。