l'array in js si comporta come vorresti solo quando usi una coppia chiave numerica / valore
la sua proprietà length è limitata a questo tipo di elementi

oltre a permetterti una notazione del tipo
a['chiave'] = 'valore'

ti permette anche l'uso della notazione ad oggetti
a.chiave = 'valore';

non a caso un typeof di un array dà 'Object'