elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  convertir un array en Map en javascript
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: convertir un array en Map en javascript  (Leído 7,988 veces)
.rn3w.


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
convertir un array en Map en javascript
« en: 17 Septiembre 2016, 03:08 am »

quiero convertir un arreglo a Map()
este arreglo lo uso para ejemplo, en este console
"console.log(arrayParaMap);" sale undefined
el ejemplo que uso es este //example {a:1,a:2,a:1,b:1,b:5,b:6}
el map que prentendo obtener es [a,{1,2,1}
                                               b,{1,5,6}]

este es mi codigo
Código
  1. var revisados=[];
  2. var mapita=new Map();
  3. var fabrica =function(array){ //input array -  output map
  4. for (var i = 0; i < array.length; i++) {
  5. var arreglo1=array[i].split(":");
  6. var arrayParaMap=[];
  7. for (var j = 0; j < array.length; j++) {
  8. var arreglo2=array[j].split(":");
  9. if(!db(arreglo1[0])){
  10. if(arreglo1[0]==arreglo2[0]){
  11. arrayParaMap.push(arreglo2[2]);
  12. console.log(arrayParaMap);
  13. }
  14. }
  15.  
  16. };
  17. mapita.set(arreglo1[0],arrayParaMap);
  18. revisados.push(arreglo1[0]);
  19. };
  20. for (var key of mapita.keys()) {
  21.   console.log(key);
  22. }
  23. for (var value of mapita.values()) {
  24.   // for (var i = 0; i < value.length; i++) {
  25.   console.log(value);
  26.   // };
  27.  
  28. }
  29. }
  30. var db=function(data){
  31. for (var i = 0; i < revisados.length; i++) {
  32. if(revisados[i]==data){
  33. return true;
  34. }
  35. };
  36. return false;
  37. }
  38.  
  39. //example {a:1,a:2,a:1,b:1,b:5,b:6}
  40. var arregloPrueba=["a:1","a:2","a:1","b:1","b:5","b:6"];
  41. fabrica(arregloPrueba);

en que estoy fallando?


En línea

Jeferi


Desconectado Desconectado

Mensajes: 886



Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #1 en: 17 Septiembre 2016, 03:17 am »

¿Te refieres a un array, verdad?

Es decir:
Código
  1. var example = [{a:1}, {a:2}, {a:3}, {b:1}, {b:2}]

Te lo comento porque un objeto:
Código
  1. var example = {a:1,a:2,a:3,b:1,b:2}
Si muestras example resultaría
Código
  1. {a:3,b:2}

Lo que quieres obtener es:
Código
  1. {a:[1,2,3],b:[1,2]}


« Última modificación: 17 Septiembre 2016, 03:22 am por Jeferi » En línea

.rn3w.


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #2 en: 17 Septiembre 2016, 03:37 am »

si tengo un array
Código:
[{a:1}, {a:2}, {a:3}, {b:1}, {b:2}]
y quiero
Código:
{a:[1,2,3],b:[1,2]} // el cual es un Map
« Última modificación: 17 Septiembre 2016, 03:39 am por .rn3w. » En línea

Jeferi


Desconectado Desconectado

Mensajes: 886



Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #3 en: 17 Septiembre 2016, 03:52 am »

si tengo un array
Código:
[{a:1}, {a:2}, {a:3}, {b:1}, {b:2}]
y quiero
Código:
{a:[1,2,3],b:[1,2]} // el cual es un Map

Haciendo uso de los nuevos métodos para arrays de ES6 lo tienes fácil y te olvidas de tanto bucle for. (Tener en cuenta que NodeJS ya acepta más del 90% de las características de ES6)
Voy a utilizar el método Array.reduce de la nueva especificación.

Código
  1. const obj = [{a:1}, {a:2}, {a:3}, {b:1}, {b:2}];
  2.  
  3. const objMapped = obj.reduce((array, item) => {
  4.  let arr = [];
  5.  
  6.  for (let i of Object.keys(item))
  7.  {
  8.    if (!array[i])
  9.      array[i] = [];
  10.  
  11.    array[i].push(item[i]);
  12.    return array;
  13.  }
  14. }, []);
  15.  
  16. console.log(objMapped);

objMapped contiene el nuevo array

Te muestro el resultado en mi máquina:
Código
  1. $ node elhacker-net.js
  2. [ a: [ 1, 2, 3 ], b: [ 1, 2 ] ]

-

Edito:

Hice otro ejemplo, un poco más acorde a ES6, olvidando Array.push de la línea 11
Código
  1. const obj = [{a:1}, {a:2}, {a:3}, {b:1}, {b:2}];
  2.  
  3. const objMapped = obj.reduce((array, item) => {
  4.  let arr = [];
  5.  
  6.  for (let i of Object.keys(item))
  7.  {
  8.    if (!array[i])
  9.      array[i] = [];
  10.  
  11.    array[i] = [...array[i], item[i]];
  12.    return array;
  13.  }
  14. }, []);
  15.  
  16. console.log(objMapped);
  17.  

Para aprender más, puedes encontrar información en MDN acerca de ES6.
« Última modificación: 17 Septiembre 2016, 03:59 am por Jeferi » En línea

.rn3w.


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #4 en: 17 Septiembre 2016, 04:02 am »

del primer ejemplo, todos los "let" lo cambie por var y funciono

y del segundo no reconoce
Citar
array = [...array, item];
En línea

Jeferi


Desconectado Desconectado

Mensajes: 886



Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #5 en: 17 Septiembre 2016, 04:09 am »

del primer ejemplo, todos los "let" lo cambie por var y funciono

y del segundo no reconoce

Pensaba que lo ejecutabas sobre NodeJS. Fallo mío.
Hay algunos navegadores que aún no reconocen la nueva sintáxis (aunque deberían).

Usa el primero si el segundo no te ha funcionado.
En línea

.rn3w.


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #6 en: 17 Septiembre 2016, 04:14 am »

lo uso sobre nodejs, imag

cual sera el problema(solo por curiosidad)
En línea

Jeferi


Desconectado Desconectado

Mensajes: 886



Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #7 en: 17 Septiembre 2016, 04:16 am »

Ejecuta node --version y postea el resultado.
En línea

.rn3w.


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #8 en: 17 Septiembre 2016, 04:19 am »

la version es v4.5.0
En línea

Jeferi


Desconectado Desconectado

Mensajes: 886



Ver Perfil WWW
Re: convertir un array en Map en javascript
« Respuesta #9 en: 17 Septiembre 2016, 04:24 am »

la version es v4.5.0

Claro. Fíjate que la versión 4.5.0 de Node no soporta "spread operator (...)"



Fuente: https://kangax.github.io/compat-table/es6/

Actualiza a la versión 6 si no es un problema para tí.
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
convertir text box en array
Programación Visual Basic
GrTk 3 8,136 Último mensaje 22 Abril 2007, 20:57 pm
por yovaninu
parse_str, convertir querystring a array
PHP
raul338 3 3,003 Último mensaje 5 Junio 2011, 21:25 pm
por raul338
Convertir Array de php a Array de javascript
PHP
WHK 0 3,469 Último mensaje 23 Enero 2012, 18:05 pm
por WHK
convertir cadena en array (javascript)
Desarrollo Web
kakashi20 4 11,537 Último mensaje 27 Mayo 2012, 07:19 am
por basickdagger
javascript array
Scripting
jalbtercero 1 1,318 Último mensaje 14 Febrero 2016, 01:13 am
por 0xFer
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines