Dado
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key2'] = { Name: 'Object 2' };
myHash['key3'] = { Name: 'Object 3' };
¿Cómo elimino key2
, y object 2
del hash, para que termine en un estado como si lo hiciera?
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key3'] = { Name: 'Object 3' };
eliminar no hace lo que quiero;
delete myHash['key2']
simplemente me da esto:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myhash['key2'] = null;
myHash['key3'] = { Name: 'Object 3' };
los únicos documentos que puedo encontrar splice
y slice
tratar con indexadores de enteros, que no tengo.
Editar: tampoco sé si 'key2' está necesariamente en la posición [1]
ACTUALIZAR
OK, una pequeña pista falsa, la eliminación parece hacer lo que quiero en la superficie, sin embargo, estoy usando json2.js para encadenar mi objeto a json para devolverlo al servidor,
después de haber eliminado, myHash se serializa como:
[ { Name: 'Object 1' }, null, { Name: 'Object 3' } ]
¿Es esto un error en json2.js? ¿O es algo que estoy haciendo mal al eliminar?
Gracias
javascript
arrays
Andrew Bullock
fuente
fuente
var myHash = new Object()
lugar devar myHash = new Array()
.Respuestas:
Estas buscando
delete
:delete myhash['key2']
Consulte la guía básica de JavaScript
fuente
myhash
deben tener lugar solo en el ámbito actual.delete
puede tener efectos secundarios si las variables en otros lugares se refieren almyhash
objeto.¿Por qué lo usas
new Array();
para hash? Necesitas usarnew Object()
en su lugar.Y creo que obtendrás lo que quieres.
fuente
Dice que no necesariamente sabe que 'key2' está en la posición [1]. Bueno, no lo es. La posición 1 estaría ocupada por myHash [1].
Está abusando de las matrices de JavaScript, que (al igual que las funciones) permiten hashes de clave / valor. Aunque JavaScript lo permite, no le da facilidades para manejarlo, como lo haría un lenguaje diseñado para matrices asociativas. Los métodos de matriz de JavaScript funcionan solo con las propiedades numeradas.
Lo primero que debe hacer es cambiar a objetos en lugar de matrices. No tiene una buena razón para usar una matriz aquí en lugar de un objeto, así que no lo haga. Si desea utilizar una matriz, simplemente numere los elementos y renuncie a la idea de hash. La intención de una matriz es contener información que se pueda indexar numéricamente.
Por supuesto, puede poner un hash (objeto) en una matriz si lo desea.
myhash[1]={"key1","brightOrangeMonkey"};
fuente
Otra opción puede ser este método de eliminación de John Resig . puede adaptarse mejor a lo que necesita. si conoce el índice en la matriz.
fuente