2011-03-23 6 views
49

¿JQuery admite la colección Dictionaries (clave, valor)?¿JQuery es compatible con la colección Diccionarios (clave, valor)?

me gustaría establecer los siguientes datos en una estructura de

[1, false] 
[2, true] 
[3, false] 

con la posibilidad de añadir, de búsqueda, borrar y actualizar.

¡Cualquier ayuda!

+0

¿Qué pasa con arreglo asociativo de Javascript? – kennytm

+0

Si bien Javascript admite un tipo de diccionario de colección, ¿por qué no simplemente almacenar los valores en una matriz ya que sus claves son numéricas? – kevmo314

+0

Necesita almacenar los datos con respecto a un elemento DOM o en general. ¿Por qué no puede usar un objeto javascript simple? Si los datos deben almacenarse con respecto a determinados elementos DOM, puede consultar http: // api. jquery.com/jQuery.data/ – frictionlesspulley

Respuesta

101

No, jQuery no, pero Javascript si.

sólo tiene que utilizar un objeto:

var dict = { 
    "1" : false, 
    "2" : true, 
    "3" : false 
}; 

// lookup: 
var second = dict["2"]; 
// update: 
dict["2"] = false; 
// add: 
dict["4"] = true; 
// delete: 
delete dict["2"]; 
+0

Muchas gracias. pequeña pregunta: ¿Puedo inicializarlo sin valores? – Homam

+4

@John: Sí, simplemente omita los valores: 'var dict = {};'. –

+0

Debería pensar en actualizar la respuesta para incluir 'map', sería realmente útil para el futuro. (a pesar de que tales respuestas no deberían convertirse en el único punto de la verdad, también conocido como manual) –

2

Sí, se puede utilizar el objeto de hacer esto:

var myDict = { 1:false , 2:true , 3:false }; 
+0

¿Cuál sería la sintaxis para agregar una nueva entrada en 'dict' para una clave ya existente?Teniendo en cuenta que quiero agregar '" 2 ":" falso "' a 'var dict = {" 1 ": falso," 2 ": verdadero," 3 ": falso};' – user1928158

2

No es necesario diccionario clases separadas, ya que Javascript objetos actúan como diccionarios. Ver esto:

var userObject = {}; // equivalent to new Object() 
userObject["lastLoginTime"] = new Date(); 
alert(userObject["lastLoginTime"]); 

artículo completo aquí: http://msdn.microsoft.com/en-us/magazine/cc163419.aspx

5

jQuery, no. Pero JavaScript lo hace. Solo hay dos estructuras en JavaScript, arrays y objects.

objetos se pueden utilizar como diccionario, donde las propiedades son las "claves":

var dict = { 
    1: true, 
    2: true, 
    3: false 
}; 

propiedades de los objetos se puede acceder ya sea con la notación de puntos, obj.property (si el nombre de la propiedad es un identificador válido, el cual un dígito como se usa arriba no lo está) o con notación de acceso a arreglos, obj['property'].

+0

¿No crees que desde 'consola. log (dict.1) 'es imposible de escribir, es muy confuso, especialmente en casos como:' var foo = {3: true, 2: true, 1: false}; console.log (foo [1]); ' –

+0

@CasparKleijne: No estoy muy seguro * qué * crees que es confuso. ¿Quieres decir que podría confundirse con una matriz? Imo uno siempre debe saber con qué estructura de datos se está tratando. –

+0

¿Cuál sería la sintaxis para agregar una nueva entrada en 'dict' para una clave ya existente? Teniendo en cuenta que quiero agregar '" 2 ":" falso "' a 'var dict = {" 1 ": falso," 2 ": verdadero," 3 ": falso};' – user1928158

3

Con JavaScript puro,

var myDictionary = new Object(); 
myDictionary[1] = false; 
myDictionary[2] = true; 
myDictionary[3] = false; 

function look(i) { return myDictionary[i];} 
look(1); // will return false 
Cuestiones relacionadas