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.

#20
si tienes razon la funcion esta bien, el problema es la exportacion e importacion de la funcion, mira en el app estoy importando el archivo fabrica asi:

var ror2 = require('./node_modules/node-svm/sample/fabrica');

y lo uso asi

app.post('/servidor', function(req,res){
   
   console.log(req.body.fact);// imprime bien el array [{"id":65,"time":98},{"id":83,"time":170}]
   ror2.fabricar(req.body.fact);
   
});


mi archivo fabrica tiene la funcion de arriba
Código (javascript) [Seleccionar]
var fabricar=function(obj){
// const obj = [{id: 'a', time: 1}, {id: 'a', time: 2}, {id: 'b', time: 1}];
console.log(obj);// muestra el array que mando
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 array que mando se muestra y luego falla , hasta "console.log(obj);// muestra el array que mando" todo bien.

.rn3w.

aqui no entra,  lo puse un console.log en medio de esa funcion y no muestra nada

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

MinusFour

¿Cual es el error exactamente? Lo único que se me ocurre es que estes haciendo algo como:

Código (javascript) [Seleccionar]

exports.fabricar = fabricar;
module.exports = {}; //o
exports.fabricar = {}; //o alguna otra cosa

.rn3w.

no se cual sea el error, y si estoy haciendo "exports.fabricar = fabricar;" pero cuando envio desde el archivo principal llamado app.js llega  y lo muestro
var fabricar=function(obj){
// const obj = [{id: 'a', time: 1}, {id: 'a', time: 2}, {id: 'b', time: 1}];
console.log(obj);// muestra el array que mando


pero esta parte ya no termina
const objMapped = obj.reduce((acc, item) => {
  let { id, time } = item;
  acc[id] = acc[id] || [];
  acc[id].push(time);
  return acc;
}, []);

console.log(objMapped);
}


pero cuando lo mando un array estatico por ejemplo asi:
ror2.fabricar([{"id":65,"time":98},{"id":83,"time":170}]);
funciona al 100%

.rn3w.

encontre el error, no estoy enviando array. me explico, lo estoy pasando desde ajax asi:data: { fact: JSON.stringify(key_cadaTecla)}, y ahi deja de ser array se convierte .json, mi pregunta es como convertirlo en array?, modificando, lo solucione asi var json = '{"0":"1","1":"2","2":"3","3":"4"}'; var parsed = JSON.parse(json); var arr = []; for(var x in parsed){ arr.push(parsed
  • ); }

MinusFour

Lo ideal es que envies con el contentType: "application/json" y tengas un parser para express (como body-parser). Así el string es convertido a un arreglo.

.rn3w.

#26
lo probare gracias!!!
y luego comento si funciono!!! estas en lo correcto si funciona!!!

ahora tengo otra pregunta como recorro/iterar el objeto ?

Citarconst 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);

vi que se puede iterar por sus keys:
Object.keys(obj).forEach(key => {
  let value = obj[key]
})