JavaScript: gli array associativi non esistono

JavaScript: gli array associativi non esistono

Su JavaScript circolano falsi miti che contribuiscono a confondere le idee agli sviluppatori. Uno di questi miti riguarda i cosiddetti array associativi. Vediamo di sfatare questo mito.

Il mito nasce con la pubblicazione di alcune guide a JavaScript che presentavano esempi di questo tipo:


var assocArr = new Array();
assocArr['test'] = 'OK';
alert(assocArr['test']); // 'OK'

In JavaScript gli array sono oggetti quindi la sintassi vista poc'anzi è semplicemente uno dei modi con cui si può aggiungere una proprietà ad un oggetto (ossia tramite la notazione con parentesi quadre). Questo si applica a tutti gli oggetti, quindi non si sta affatto creando un array associativo ma solo un hash di proprietà e valori.

La guida di Google a JavaScript chiarisce ogni dubbio e bolla questa pratica come deprecata:

Never use Array as a map/hash/associative array

Associative Arrays are not allowed... or more precisely you are not allowed to use non number indexes for arrays. If you need a map/hash use Object instead of Array in these cases because the features that you want are actually features of Object and not of Array. Array just happens to extend Object (like any other object in JS and therefore you might as well have used Date, RegExp or String).

Quindi possiamo dire che in JavaScript gli array associativi non esistono.

Torna su