La definizione di wikipedia sembra corretta e abbastanza generale:
collection of unique keys and a collection of values, where each key is associated with one value (or set of values)
Non una parola sull'ordine. Questo dovrebbe essere perfetto, poiché ci sono molti buoni modi per implementare strutture dati che sono array associativi perfetti, solo senza il requisito "ordinato" (se fosse lì). Non ho mai sentito qualcuno reclamare una "mappa ad albero" (come alcune API chiamano perché usa internamente un albero binario bilanciato) o hashtable non è un array associativo perché è ordinato o meno. Inoltre, la maggior parte del codice non interessa se le chiavi sono ordinate.
Personally I've always believed they have to be ordered because in JavaScript we claim Objects are not associative arrays because Objects are un-ordered maps of keys and values.
Quella logica ("AA deve essere ordinato perché gli Oggetti non sono AA perché gli Oggetti non sono ordinati") sembra un po 'circolare. Chi siamo noi e perché stai sostenendo questo? Gli oggetti Javascript sono chiaramente tabelle hash e le tabelle hash sono chiaramente array associativi di cui sopra e praticamente tutte le altre definizioni. Non sono ordinati, sì, ma questo non cambia il fatto che sono collezioni che associano le stringhe agli oggetti.
E anche se si è riusciti a trovare una fonte attendibile che definisce gli array associativi da ordinare, ci sono un sacco di persone e testi là fuori che non vanno su tale presupposto. Per sicurezza, dovresti aggiungere esplicitamente il requisito "ordinato" quando è importante e ometterlo ogni volta che non ha importanza (il che è sorprendentemente spesso).