¿Cómo puedo crear claves dinámicamente en matrices asociativas de JavaScript?
Toda la documentación que he encontrado hasta ahora es para actualizar las claves que ya están creadas:
arr['key'] = val;
Tengo una cuerda como esta " name = oscar "
Y quiero terminar con algo como esto:
{ name: 'whatever' }
Es decir, dividí la cadena y obtuve el primer elemento, y quiero poner eso en un diccionario.
Código
var text = ' name = oscar '
var dict = new Array();
var keyValuePair = text.split(' = ');
dict[ keyValuePair[0] ] = 'whatever';
alert( dict ); // prints nothing.
javascript
associative-array
OscarRyz
fuente
fuente
Respuestas:
Usa el primer ejemplo. Si la clave no existe, se agregará.
Aparecerá un cuadro de mensaje que contiene 'oscar'.
Tratar:
fuente
De alguna manera, todos los ejemplos, aunque funcionan bien, son demasiado complicados:
new Array()
, que es una exageración (y una sobrecarga) para una matriz asociativa simple (diccionario AKA).new Object()
. Funciona bien, pero ¿por qué toda esta escritura adicional?Esta pregunta está etiquetada como "principiante", así que hagámoslo simple.
La forma súper simple de usar un diccionario en JavaScript o "¿Por qué JavaScript no tiene un objeto de diccionario especial?":
Ahora cambiemos los valores:
Eliminar valores también es fácil:
fuente
Javascript no tiene matrices asociativas , tiene objetos .
Las siguientes líneas de código hacen exactamente lo mismo: establecer el campo 'nombre' en un objeto en 'orion'.
Parece que tiene una matriz asociativa porque una
Array
también es unaObject
; sin embargo, en realidad no está agregando cosas a la matriz, está configurando campos en el objeto.Ahora que eso está aclarado, aquí hay una solución funcional a su ejemplo.
fuente
En respuesta a MK_Dev, uno puede iterar, pero no consecutivamente.(Para eso obviamente se necesita una matriz)
La búsqueda rápida de google aparece tablas hash en javascript
Código de ejemplo para recorrer valores en un hash (del enlace mencionado anteriormente):
fuente
Código original (agregué los números de línea para poder consultarlos):
Casi ahí...
trim
texto en modo asíname = oscar
.trim
en la línea 1, usar=
y recortar cada keyValuePairagregue una línea después de 3 y antes de 4:
línea 4: ahora se convierte en:
línea 5: Cambiar a:
Lo que intento decir es que
dict[keyValuePair[0]]
no funciona, debe establecer una cadenakeyValuePair[0]
y usarla como clave asociativa. Esa es la única forma en que conseguí que el mío funcionara. Después de configurarlo, puede consultarlo con índice numérico o ingresar comillas.Espero que ayude.
fuente
Todos los navegadores modernos admiten un mapa , que es una restricción de datos clave / valor. Hay un par de razones que hacen que usar un Mapa sea mejor que un Objeto:
Ejemplo:
Si desea que las claves a las que no se hace referencia desde otros objetos se recojan como basura, considere usar un WeakMap en lugar de un Mapa.
fuente
Creo que es mejor si acabas de crear así
para más información, mira esto
Estructuras de datos JavaScript: matriz asociativa
fuente
esto está bien pero itera a través de cada propiedad del objeto de matriz. si solo desea recorrer las propiedades myArray.one, myArray.two ... intente así
ahora puede acceder a ambos mediante myArray ["one"] e iterar solo a través de estas propiedades.
fuente
Array
yObject
trabajar solo conObject
árboles! Maravillosa visión! ¡Es muy útil hacerObject.getOwnPropertyNames(obj/array)
!}
fuente