2015-02-26 6 views
-1

Итак, у меня есть следующий код, и я проверяю, существует ли ключ в массиве. если нет, я создаю его, а затем я нажимаю на него элементы. Все работает за исключением того, что длина основного массива всегда 0.Javascript: Длина массива 0 при добавлении элементов

if(typeof this.markerList[this.lastClicked] === 'undefined'){ 
    this.markerList[this.lastClicked] = []; 
} 
this.markerList[this.lastClicked].push(marker); 

результат console.log:

enter image description here

+0

похоже, что вы не используете элементы, основанные на индексах ... вместо этого присвоено свойство на основе ключа свойства –

+2

'Object'! =' Array' – Hacketo

+0

Хм, вы не нажимаете на markerList, а на маркерList []. Это твоя проблема? – Nico

ответ

0

MDN: При установке свойства в массиве JavaScript, когда свойство является допустимого индекса массива и индекс выходит за пределами текущих пределов массива, двигатель обновит массив length

Свойство length поэтому не обновляется, поскольку вы используете ключи, а не числовые индексы.

С Array также является Object, то, что вы делаете, просто прикрепляет к нему свойство, которое не влияет на свойство .

+0

ОК спасибо. Я вижу, где я ошибся. суровая толпа здесь. – Christophe

+0

@ Христос рад помочь. –

0

Массивы являются объектами и могут иметь свойства.

var myArray = []; 

myArray.push(1); 
myArray.push(2); 

myArray["somekey"] = []; 

дамп дают:

enter image description here

Свойство Длина связана с количеством элементов, добавленных с помощью метода push или с числовым индексом array[x] =

В this.markerList казалось, что вы не добавляли ни одного элемента в массив, добавляли только свойства.

Смежные вопросы