transformación- en una matriz

Entrada:

{ key : "value" ,
  list : [
    { 
        key : "values1" ,
        list : [
            { key : "value2" , list :[{ key : "simpleValue" } ]
            }
            ]
    },
    {
        key : "value3"
    }
]
}

Salida:

{clave: ["valor", "valores1", "valores2", "valor simple", "valores3"]}

el código que escribí para la conversión es

var outputArray=new Array();
var count=0;
  function recursion(testData){



if(testData.key==undefined)
{

return ;

}


else
{
    outputArray[count]=testData.key;
    count++;

for(var k in testData.list)
    {

    testData1=testData.list[k];
    recursion(testData1);
    recursion(testData.key);
    }


}

return outputArray;
}

El resultado solo me dará la lista de valores en una matriz, como ['valor', 'valores1', 'valor2', 'simpleValue', 'valor3'], ¿cómo uso el método hash para obtener el resultado correcto?

preguntado el 03 de mayo de 12 a las 09:05

¿Quiere decir: { clave: ["valor", "valores1", "valores3"] }? -

No entiendo, que quieres hacer... por que quieres hacer hachís y para que? -

¿Es posible obtener una salida en el formato { clave: ["valor", "valores1", "valores3"] } de mi entrada? -

Por favor, aplique una sangría a su código. -

¿Por qué necesitaría una función hash para devolver un objeto? -

2 Respuestas

Mmm algo asi??

var inpObj = { key : "value" ,list : [
                    {
                        key : "values1"
                    },
                    {
                        key : "value3"
                    }
                ]
            };

var outputObj = new Object;
var outputArray = new Array();

function recursion(testData){
    if(testData.key==undefined)
    {
        return;
    }
    else
    {
        var newKey={};
        //alert(testData.key);
        outputArray.push(testData.key);

        for(var k in testData.list)
        {
            testData1=testData.list[k];
            recursion(testData1);
            recursion(testData.key);
        }
    }

    return outputArray;
}

recursion(inpObj);
if (outputObj.key == undefined) outputObj.key = outputArray;
alert(outputObj.key.join(", "));

contestado el 03 de mayo de 12 a las 09:05

¿Qué error obtienes? Tengo un objeto con clave como "clave" y la clave tiene una matriz con valores. { llave: [] } - Tobi

mmm... mira esto: jsfiddle.net/AhrWU funciona bien... creo que tienes un error de copiar y pegar... ¡comprueba tu código! - Tobi

tengo esta cosa solucionada

var outputArray=new Array();

function recursion(testData){


if(testData.key==undefined)
{

return ;

}


else
{

    //alert(testData.key);
    outputArray.push(testData.key);

for(var k in testData.list)
    {
    testData1=testData.list[k];
    recursion(testData1);
    recursion(testData.key);
    }


}


var l={};
l.key=outputArray;
return l;
}

contestado el 05 de mayo de 12 a las 14:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.