1

入力:

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

出力:

{キー:["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;
}

出力は、値リストに['value'、'values1'、'value2'、'simpleValue'、'value3']のような配列のみを提供します。ハッシュメソッドを使用して正しい出力を取得するにはどうすればよいですか?

4

2 に答える 2

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(", "));
于 2012-05-03T08:39:01.173 に答える
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;
}
于 2012-05-05T13:48:58.007 に答える