转换为数组

时间:2012-05-03 08:12:24

标签: javascript arrays data-structures

输入:

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

输出:

{key:[“value”,“values1”,“values2”,“simpleeValue”,“values3”]}

我为转换而编写的代码是

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;
}

输出只会给我一个数组的值列表,比如[  '值',  “值1”,  “值”,  'simpleValue',  “值3” ],如何使用哈希方法获得正确的输出?

2 个答案:

答案 0 :(得分:0)

嗯,这样的事情?

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(", "));

答案 1 :(得分:0)

我把这件事搞定了

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;
}