У меня есть следующие данные:
var data = [
{ index : 1, sort : 10, parent : 0 },
{ index : 2, sort : 7, parent : 0 },
{ index : 3, sort : 15, parent : 1 },
{ index : 4, sort : 4, parent : 0 },
{ index : 5, sort : 13, parent : 1 },
{ index : 6, sort : 20, parent : 5 },
{ index : 7, sort : 2, parent : 8 },
{ index : 8, sort : 6, parent : 5 },
];
Как эффективно отсортировать это как по родительскому идентификатору, так и по значению сортировки, чтобы я в итоге получил:
var data = [
{ index : 4, sort : 4, parent : 0 },
{ index : 2, sort : 7, parent : 0 },
{ index : 1, sort : 10, parent : 0 },
{ index : 5, sort : 13, parent : 1 },
{ index : 8, sort : 6, parent : 5 },
{ index : 7, sort : 2, parent : 8 },
{ index : 6, sort : 20, parent : 5 },
{ index : 3, sort : 15, parent : 1 },
];
Этодревовидная структура.За каждым элементом сразу следуют любые дочерние элементы, и все элементы в одной ветви сортируются по значению сортировки.
Лучшее, что я могу придумать, - это сначала отсортировать по родителю, а затем выполнить вторую сортировку в каждой ветви.,Это кажется неэффективным.
Редактировать: пример порядка сортировки был неправильным.Я исправил это.
Редактировать для пояснения: каждая вложенная ветвь должна появляться сразу под родительским значением, а не в конце ветки.
Редактировать: дальнейшие исправления к данным.