¿Cómo puedo convertir algo así como initialArray
array de objects JSON en el map finalObject
?
var initialArray = [ { id:'id1', name:'name1' }, { id:'id2', name:'name2' }, { id:'id3', name:'name3' }, { id:'id4', name:'name4' } ]; var finalObject = { 'id1':'name1', 'id2':'name2', 'id3':'name3', 'id4':'name4' }
Cosas para considerar:
¿Algunas ideas?
Necesita operar los objects en su matriz, no las cadenas que contienen sus índices en la matriz.
También debería usar un ciclo for para iterar sobre una matriz.
Su JSFiddle, reparado:
var x = [ {id:'1', img:'img1'}, {id:'2', img:'img2'}, {id:'3', img:'img3'} ]; var resp = {}; for( var i = 0 ; i < x.length ; i++ ){ var obj = x[i]; resp[obj.id] = obj.img; } document.write( JSON.stringify(resp, undefined, 2) );
MANIFESTACIÓN
Puede recorrer la matriz y, para cada object, agregar una nueva propiedad a finalObject
cuyo nombre de propiedad es la identificación, y cuyo valor es el nombre.
var finalObject = {}; for (var i = 0, max = initialArray.length; i < max; i++) finalObject[initialArray[i].id] = initialArray[i].name;
resp[key.id] = key.img;
Lo llamas correctamente key. Pero necesitas un valor;
resp[x[key].id] = x[key].img;
var finalObject = initialArray.networkinguce(function(ret, obj){ ret[obj.id] = obj.name; return ret; }, {});
Esta solución es específica de los nombres de propiedad para la pregunta específica, pero Array.prototype.networkinguce
es una function que uso todo el time para cualquier tipo de iteración de matriz que requiera un resultado que no sea de matriz.
No estás usando For In correctamente jsFiddle
var x = [ {id:'1', img:'img1'}, {id:'2', img:'img2'}, {id:'3', img:'img3'} ]; var resp = {}; for( var key in x ){ resp['id' + x[key].id] = x[key].img; } document.write( JSON.stringify(resp, undefined, 2) );
1.
for (var i=0; i<x.length; i++) { var id = 'id' + x[i].id; var img = x[i].img; resp[id] = img; }
si he entendido bien, puedes hacer algo como
var x =' [ {"id":"1", "img":"img1"}, {"id":"2", "img":"img2"}, {"id":"3", "img":"img3"}]'; var resp = {}; var json = $.parseJSON(x); $(json).each(function(i,v){ resp[v.id]=v.img; }); console.log( resp);
hablaste de json, pero en el violín que proporcionaste no había json, incluso jquery no se agregó como recurso, así que hice algunas suposiciones
Hoy estaba en la misma pregunta y no encontré una respuesta aquí, excepto la respuesta de @ adam-rackis.
La forma en que encontré es:
var initialArray = [ { id:'id1', name:'name1' }, { id:'id2', name:'name2' }, { id:'id3', name:'name3' }, { id:'id4', name:'name4' } ], finalObject = {}; $.each(initialArray, function(k,v) { finalObject[v.name] = v.value; });