convertir array a Map en javascript – javascript map nodejs

Pregunta:


quiero convertir un arreglo a Map(), 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

var revisados=[];
var mapita=new Map();
var fabrica =function(array){ //input array -  output map
    for (var i = 0; i < array.length; i++) {
        var arreglo1=array[i].split(":");
        var arrayParaMap=[];
        for (var j = 0; j < array.length; j++) {
            var arreglo2=array[j].split(":");
            if(!db(arreglo1[0])){
                if(arreglo1[0]==arreglo2[0]){
                    arrayParaMap.push(arreglo2[2]);
                    console.log(arrayParaMap);
                }   
            }

        };
        mapita.set(arreglo1[0],arrayParaMap);
        revisados.push(arreglo1[0]);
    };
    for (var key of mapita.keys()) {
        console.log(key);
    }
    for (var value of mapita.values()) {
        // for (var i = 0; i < value.length; i++) {
            console.log(value);
        // };

    }
} 
var db=function(data){
    for (var i = 0; i < revisados.length; i++) {
        if(revisados[i]==data){
            return true;
        }
    };
return false;
}

//example {a:1,a:2,a:1,b:1,b:5,b:6}
var arregloPrueba=["a:1","a:2","a:1","b:1","b:5","b:6"];
fabrica(arregloPrueba);

en que estoy fallando?

Preguntado por: hubman

Arnau Castellví

Quizás lo que buscas se parezca a esto:

var arregloPrueba=["a:1","a:2","a:1","b:1","b:5","b:6"];

function matriz2mapa(matriz){
	var i,par;
	var mapa = new Map();
	for (i=0;i<matriz.length;i++){
		par = matriz[i].split(":");
		if (!mapa.has(par[0])) mapa.set(par[0],[]);
		mapa.get(par[0]).push(par[1]);
	}
	return mapa;
}
var mapa=matriz2mapa(arregloPrueba);
console.log("a:",mapa.get('a'));
console.log("b:",mapa.get('b'));

Fuente

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *