ね、このjsonをソートしようとしています。jqueryを使用してオブジェクトのオブジェクト内のjsonをソートする方法
{
"id": "1",
"parentId": "",
"children": [
{
"id": "1.1",
"parentId": "1",
},
{
"id": "1.2",
"parentId": "1",
},
{
"id": "1.3",
"parentId": "1",
},
{
"id": "1.4",
"parentId": "1",
},
{
"id": "1.1.1",
"parentId": "1.1",
},
{
"id": "1.1.2",
"parentId": "1.1",
},
{
"id": "1.1.3",
"parentId": "1.1",
},
{
"id": "1.1.1.1",
"parentId": "1.1.1",
},
{
"id": "1.1.1.2",
"parentId": "1.1.1",
},
]
}
jsonはツリー形式でソートする必要があります。オブジェクトの親のIDが他のオブジェクトのIDと一致する場合、同様のオブジェクトがオブジェクトの下に来るなど、n番目のレベルになります。
予想される出力は次のようにすべきである:私は試みたが、それはわずか3レベル件まで表示されている
{
"id": "1",
"parentId": "",
"children": [
{
"id": "1.1",
"parentId": "1",
"children": [
{
"id": "1.1.1",
"parentId": "1.1",
"children": [
{
"id": "1.1.1.1",
"parentId": "1.1.1",
"children": []
},
{
"id": "1.1.1.2",
"parentId": "1.1.1",
"children": []
},
]
},
{
"id": "1.1.2",
"parentId": "1.1",
"children": []
},
{
"id": "1.1.3",
"parentId": "1.1",
"children": []
},
]
},
{
"id": "1.2",
"parentId": "1",
"children": []
},
{
"id": "1.3",
"parentId": "1",
"children": []
},
{
"id": "1.4",
"parentId": "1",
"children": []
},
]
}
。
$(document).ready(function() {
\t
\t var json = JSON.parse(`{
"id": "1",
"parentId": "",
"children": [
{
"id": "1.1",
"parentId": "1"
},
{
"id": "1.2",
"parentId": "1"
},
{
"id": "1.3",
"parentId": "1"
},
{
"id": "1.4",
"parentId": "1"
},
{
"id": "1.1.1",
"parentId": "1.1"
},
{
"id": "1.1.2",
"parentId": "1.1"
},
{
"id": "1.1.3",
"parentId": "1.1"
},
{
"id": "1.1.1.1",
"parentId": "1.1.1"
},
{
"id": "1.1.1.2",
"parentId": "1.1.1"
}
]
}`);
\t var dummyParnt = json.children;
\t var dummyChild = json.children;
\t var dataGrand= json;
\t
\t var data=[];
\t var init = function() {
\t \t var children=[];
\t \t dataGrand.children=[];
\t \t var k,j=0;
\t \t
\t \t for(var i in dummyParnt){
\t \t \t if(dummyParnt[i].parentId == json.id){
\t \t \t \t dataGrand.children[j] = dummyParnt[i];
\t \t \t \t dataGrand.children[j].children =[];
\t \t \t \t
\t \t \t \t k=0;
\t \t \t for(var a in dummyChild){
\t \t \t \t if(dummyParnt[i].id == dummyChild[a].parentId){
\t \t \t \t \t dataGrand.children[j].children[k] = dummyChild[a];
\t \t \t \t \t k++;
\t \t \t \t }
\t \t \t }
\t \t \t j++;
\t \t \t }
\t \t \t
\t \t }
\t \t
\t \t console.log(dataGrand,"datagrand");
var tableHTML = '<table id="location" border=\'1\'></table>';
var trHTML = '';
trHTML += '<tr><td>' + dataGrand.id + '</td></td><td></td><td></tr>';
for(var i in dataGrand.children){
trHTML += '<tr><td></td><td>' + dataGrand.children[i].id + '</td></td><td></tr>';
for(var j in dataGrand.children[i].children){
trHTML += '<tr><td></td><td></td><td>' + dataGrand.children[i].children[j].id + '</td></tr>';
};
};
$('body').append(tableHTML);
\t
$('#location').append(trHTML);
\t }
init();
});
<html>
<head>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
</body>
</html>
更新されたコードを見ているように3番目のレベルに達した場合は、もう1つループを入れてください。 – Varsha
@Varsha入れ子オブジェクトのn番目のレベルまでソートします。 –