2

很抱歉问了一个菜鸟问题,但如果我有一个数组:

MyArray["2cd"]="blah1";
MyArray["3cx"]="blah3";
MyArray["8cz"]="blah2";

和一个字符串myStr="2cd"; 然后我使用 MyArray[myStr] 来获取 blah 的值,在这种情况下如何获取我在对象/数组中访问的数字或 0?

4

1 回答 1

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 的工作方式。

您当然可以进行设置,这样您就可以使用 my MyArray[0]andMyArray["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当您在对象中使用任意(通常但不一定非数字)键时,通常使用 an ,如您的示例中所示。Array相反,当您主要使用严格的数字索引时,通常使用 an 。

In fact, JavaScript's Array type inherits from the Object type. An Array is simply an Object with some additional behavior:

  • An Array has additional methods such as .push() which appends an item to the array.

  • An Array has a .length property which is automatically updated when you add elements with .push() or a direct array[123] assignment, or when you remove elements with .pop() or other methods.

What JavaScript doesn't have, as Fabrício pointed out, is an "associative array" that behaves like what you might find in some other languages. It has Objects and it has Arrays (which inherit from Objects), and you have to deal with each of those on their own terms.

于 2013-03-30T21:59:07.823 回答