convertir un array en Map en javascript

Iniciado por .rn3w., 17 Septiembre 2016, 03:08 AM

0 Miembros y 1 Visitante están viendo este tema.

.rn3w.

gracias, ya vere si lo actualizo y si no tengo algun problema luego de hacerlo
:laugh: :laugh: :laugh:

.rn3w.

#11
si en vez de esto:
Citar[{a:1}, {a:2}, {a:3}, {b:1}, {b:2}]

tengo :
function claves(id, time) {
   this.id = id;
   this.time = time;
}

key_cadaTecla.push(new claves(event.keyCode,tiempoPulsacion));

es decir tendria
[ObjetoClaves(a:1),ObjetoClaves(a:2), ObjetoClaves(a:3), ObjetoClaves(b:1), ObjetoClaves(b:2)]

este es el codigo que me pasaste
Citarconst obj = [{a:1}, {a:2}, {a:3}, {b:1}, {b:2}];

const objMapped = obj.reduce((array, item) => {
 let arr = [];

 for (let i of Object.keys(item))
 {
   if (!array)
     array = [];

   array.push(item);
   return array;
 }
}, []);

console.log(objMapped);

intente modificar el codigo pero no funciona


Jeferi

Cita de: .rn3w. en 17 Septiembre 2016, 15:19 PM
tengo :
function claves(id, time) {
   this.id = id;
   this.time = time;
}

key_cadaTecla.push(new claves(event.keyCode,tiempoPulsacion));

Tendrías:
Código (javascript) [Seleccionar]
[{id: a, time: 1}, {id: a, time: 2}, {id: b, time: 1}]

Para este objeto debes modificar el código a:
Código (javascript) [Seleccionar]
const obj = [{id: 'a', time: 1}, {id: 'a', time: 2}, {id: 'b', time: 1}];

const objMapped = obj.reduce((array, item) => {
  let { id, time } = item;

  if (!array[id])
    array[id] = [];

  array[id].push(time);
  return array;

}, []);

console.log(objMapped);

MinusFour

Cita de: Jeferi en 17 Septiembre 2016, 16:37 PM
Tendrías:
Código (javascript) [Seleccionar]
[{id: a, time: 1}, {id: a, time: 2}, {id: b, time: 1}]

Para este objeto debes modificar el código a:

Se espera un objeto y no un arrreglo al final creo yo.

Código (javascript) [Seleccionar]
const obj = [{id: 'a', time: 1}, {id: 'a', time: 2}, {id: 'b', time: 1}];

const objMapped = obj.reduce((acc, item) => {
  let { id, time } = item;
  acc[id] = acc[id] || [];
  acc[id].push(time);
  return acc;
}, {});

console.log(objMapped);

Jeferi

Cita de: MinusFour en 17 Septiembre 2016, 20:26 PM
Se espera un objeto y no un arrreglo al final creo yo.

Sí .Debe inicializar un objeto y no un array, en el initialValue de reduce (último parámetro)

.rn3w.

#15
he instalado la ultima version de nodejs y mi proyecto dejo de funcionar
sale este error Node v6.3 return process.dlopen(module, path._makeLong(filename));
que hago?

bueno tuve que crear otro proyecto y copie las dependencias del archivo package.json de mi anterior proyecto y luego le di "npm install", pero instalo muchas cosas que no pedi, entre ellas las que necesito, pero hay muchos modulos que no utilizare

miren aca una foto
subefotos

es normal?

ahora tengo otra pregunta mas, el codigo que postearon funciona para este  array:
Citar[{id: a, time: 1}, {id: a, time: 2}, {id: b, time: 1}]


yo necesito para este array
[{"id":65,"time":98},{"id":83,"time":170}]

cuando intento acoplar la funcion con el array de arriba no funciona asi:
Código (javascript) [Seleccionar]
var fabricar=function(obj){


const objMapped = obj.reduce((acc, item) => {
 let { id, time } = item;
 acc[id] = acc[id] || [];
 acc[id].push(time);
 return acc;
}, {});

console.log(objMapped);
}

exports.fabricar=fabricar;

el codigo:

.rn3w.

no funcionara ?  no se podra refactorizar? por mas que intento no funciona

MinusFour

Lo mas probable es que quieras que fabricar regrese el arreglo mapeado y no solo hacer el console.log.

.rn3w.

si porque necesito el Map, pero quiero ir por pasos, primero me conformaria solo con el console.log

gracias y saludos...

MinusFour

A mi me funciona tal cual. Tu arreglo probablemente no sea ese o no estes usando el modulo correctamente.