Я генерирую массив JSON из значения таблицы, а в таблице я храню Id, Parent_id и Data и другое значение. Parent_id будет NULL
если у него нет родителя, если да, то он будет ссылаться на родительский идентификатор.
[{"state":"open","data":"Signature","attr":
{"id":0,"item_id":2,"parent_id":0},"children":[{"data":"or replace","attr":
{"id":1,"item_id":3,"parent_id":2}}]},{"state":"open","data":"Parameter","attr":
{"id":0,"item_id":4,"parent_id":0},"children":[{"data":"in parameter","attr":
{"id":3,"item_id":5,"parent_id":4}},{"data":"in out parameter","attr":
{"id":4,"item_id":6,"parent_id":4}}]},{"state":"open","data":"Mandatory Block","attr":
{"id":0,"item_id":7,"parent_id":0},"children":[{"data":"validate Exit condition for loop","attr":{"id":8,"item_id":8,"parent_id":7}},{"data":"validate exception","attr":
{"id":7,"item_id":9,"parent_id":7}}]},{"state":"open","data":"parent","attr":
{"id":0,"item_id":10,"parent_id":7},"children":[{"data":"parent_CHILD","attr":
{"id":2,"item_id":11,"parent_id":10}},{"data":"parent_CHILD1","attr":
{"id":5,"item_id":12,"parent_id":10}}]}]
Сверху JSON вы можете видеть parent_id=0
потому что у него нет родителя. Теперь я хочу восстановить его в соответствии с parent_id и Item_id, что означает If parent_id=0
затем отсортировать его в соответствии с item_id
Помогите мне разобраться.
ОБНОВИТЬ
Я пробовал следовать, но не смог получить результат желания.
<script src='js/linq.js'></script>
<script src='js/jquery.js'></script>
<script>
var dataArray = $.parseJSON([{"state":"open","data":"Signature","attr":
{"id":0,"item_id":2,"parent_id":0},"children":[{"data":"or replace","attr":
{"id":1,"item_id":3,"parent_id":2}}]},{"state":"open","data":"Parameter","attr":
{"id":0,"item_id":4,"parent_id":0},"children":[{"data":"in parameter","attr":
{"id":3,"item_id":5,"parent_id":4}},{"data":"in out parameter","attr":
{"id":4,"item_id":6,"parent_id":4}}]},{"state":"open","data":"Mandatory Block","attr":
{"id":0,"item_id":7,"parent_id":0},"children":[{"data":"validate Exit condition for loop","attr":{"id":8,"item_id":8,"parent_id":7}},{"data":"validate exception","attr":
{"id":7,"item_id":9,"parent_id":7}}]},{"state":"open","data":"parent","attr":
{"id":0,"item_id":10,"parent_id":7},"children":[{"data":"parent_CHILD","attr":
{"id":2,"item_id":11,"parent_id":10}},{"data":"parent_CHILD1","attr":
{"id":5,"item_id":12,"parent_id":10}}]}]);
var sorted = Enumerable.From(dataArray)
.OrderBy(function(x) {
return x.parent_id;
})
.ThenBy(function(x) {
return x.item_id;
})
.ToArray();
console.log(sorted);
console.log(dataArray);
</script>
Посмотрите на linq.js.
var dataArray = $.parseJSON(dataInYourQuestion);
var sorted = Enumerable.From(dataArray)
.OrderBy(function(x) {
return x.parent_id;
})
.ThenBy(function(x) {
return x.item_id;
})
.ToArray();