Если я могу читать между строк, это звучит, как вы думаете, что код размещен:
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"]
принести такое же значение, но вы должны сделать это явно, как в моем примере.
Одна вещь, о которой вы не упомянули, - это то, как вы объявили . Это Array
или Object
? То есть, перед кодом вы в курсе, вы создали с:
var MyArray = {}; // or equivalently, var Array = new Object;
или:
var MyArray = []; // or equivalently, var Array = new Array;
Первый пример создает Object
, второй Array
.
Что немного сбивает с толку, так это то, что JavaScript имеет оба этих двух типа, что во многих случаях можно использовать несколько взаимозаменяемо. Но принято использовать Object
, когда вы используете в объекте произвольные (как правило, но необязательно нечисловые) ключи, как в вашем примере. И наоборот, принято использовать Array
, когда вы в основном используете строго числовые индексы.
Фактически, код Array
JavaScript наследует от Object
. Array
это просто Object
с некоторыми дополнительными поведением:
Array
имеет дополнительные методы, такие как .push()
, который присоединяет элемент в массиве.
Array
имеет .length
свойство, которое автоматически обновляется при добавлении элементов с .push()
или прямой array[123]
отчуждением или при удалении элементов с .pop()
или другими методами.
Что JavaScript не имеет, а Fabrício указал, является «ассоциативный массив», который ведет себя так, как вы могли бы найти в некоторых других языках.Он имеет объекты и имеет массивы (которые наследуются от объектов), и вам приходится иметь дело с каждым из них на своих условиях.
Индекс - это номер. Вы можете получить доступ к MyArray [0] или MyArray [cd], если cd - это число или вам нужен parseInt («2cd», 10), и это вернет 2, чтобы MyArray [2] мог также работать. – frenchie
«Индекс» представляет собой числовую строку (например, «0», «1», «2»). Для OP массивы javascript - это просто простые объекты со специальным свойством длины и методы, унаследованные от Array.prototype. Таким образом, вы можете использовать массив точно так же, как объект (не понравился, но отлично работает). Многие методы массива являются общими и могут использоваться на простых объектах с подходящими свойствами. – RobG
Я создал демонстрацию jsfiddle из приведенного вами примера: http://jsfiddle.net/zxZTX/ –