2011-08-03 31 views
5

¿Existe un lenguaje específico Javascript/Coffeescript común que pueda usar para lograr esto? Principalmente por curiosidad.fusionar dos matrices (claves y valores) en un objeto

Tengo dos matrices, una que consta de las claves deseadas y la otra que consta de los valores deseados, y quiero fusionar esto en un objeto.

keys = ['one', 'two', 'three'] 
values = ['a', 'b', 'c'] 
+1

JavaScript no tiene matrices asociativas. Se puede acceder a los miembros del objeto en una sintaxis similar a una matriz, pero siguen siendo objetos. –

+1

@nikc: Gracias, me doy cuenta de eso. Pero teniendo en cuenta el contexto, sentí que el "conjunto asociativo" habría comunicado lo que estaba buscando con menos palabras. –

+0

@Jorge - simplemente llámalo un objeto, porque eso es lo que javascript tiene. Menos para escribir también. ;-) – RobG

Respuesta

12
var r = {}, 
    i, 
    keys = ['one', 'two', 'three'], 
    values = ['a', 'b', 'c']; 

for (i = 0; i < keys.length; i++) { 
    r[keys[i]] = values[i]; 
} 
+0

Excelente respuesta, pero ¿hay alguna forma de conservar los duplicados? – rashadb

+0

@rashadb No. Los objetos no pueden tener claves duplicadas. – jhpratt

3

Mientras los dos conjuntos tienen la misma longitud, se puede hacer esto:

var hash = {}; 
var keys = ['one', 'two', 'three'] 
var values = ['a', 'b', 'c'] 

for (var i = 0; i < keys.length; i++) 
    hash[keys[i]] = values[i]; 

console.log(hash['one']) 
console.log(hash.two); 
+0

Excelente respuesta, pero ¿hay alguna forma de conservar los duplicados? – rashadb

+0

@rashadb No. Los objetos no pueden tener claves duplicadas. – jhpratt

6
keys = ['one', 'two', 'three'] 
values = ['a', 'b', 'c'] 

d = {} 

for i, index in keys 
    d[i] = values[index] 

Explicación: En CoffeeScript puede recorrer una matriz y obtener cada elemento y su posición en la matriz o índice. Entonces puede usar este índice para asignar claves y valores a un nuevo objeto.

+1

Esto es lo que finalmente hice (aunque antes de que respondiera). Aún así, +1 para ti :) –

Cuestiones relacionadas