В JavaScript строит ассоциативный массив * или хэш-карта или объект не может быть очень очевидна. Во-первых, все в конечном счете является объектом, поэтому синтаксис, используемый с ассоциативными массивами, действителен для всего, что не является «ассоциированным массивом», который, вероятно, является причиной возникновения путаницы. Сначала давайте рассмотрим проблему. Вы, вероятно, хотели использовать объект вместо массива:
arrSummat = {};
arrSummat["987"] = "Boat";
console.log(JSON.stringify(arrSummat)); // => {"987":"Boat"}
При запуске вашей скрипки (в Chrome) Я довольно много получить массив с 986 null
значений, а затем "Boat"
(я могу ошибаться, я» m не считая счет null
s в этом предупреждении).
Теперь, когда вы оригинальный вопрос будет решен, я хотел бы отметить две вещи, которые вы можете начать делать по-разному:
Предпочитаю сокращенный синтаксис для OBJETS и массивов. Два примера функционально одинаковы, но вы должны предпочесть второй для большинства целей.
var myArr = new Array();
var myObj = new Object();
То же самое, как:
var myArr = [];
var myObj = {};
сокращенную может даже прийти с некоторыми основными значениями:
var myArr = [1, 2, 3];
var myObj = {one: "1", two: "2"};
Во-вторых, никогда не используйте Array
объект как нечто иное, чем массив. Это синтаксически справедливо для этого, но это приведет к неожиданным результатам (как вы видели здесь).
- В JavaScript нет «ассоциативного массива», но объекты обычно используются в качестве замены и обеспечивают аналогичную функциональность.
Revised jsFiddle Link
Шаг один: 'Array' следует использовать только в виде массива. Не объект или «ассоциативный массив». Если вы хотите, чтобы ассоциативный массив использовал объект: 'arrSummat = {}; arrSummat ["987"] = "Лодка"; ' –
Вот ваш образец в качестве объекта: http://jsfiddle.net/s7tdq469/1/ –
Aaaargh. Вы знаете, сколько блогов/тутов/страниц, которые я посетил, обсуждали эту проблему, и все, что я нашел, было то, что массивы-получатели в js действительно являются объектами, а затем они определяли их, как я делал выше. Искреннее спасибо за решение. Пожалуйста, добавьте в качестве ответа для принятия. – crashwap