0
我想为我的对象树中的每个根对象排序子对象 - 我该怎么做?递归排序树
树:
{
folder: { id: 1, name: 'root' },
children: [
{
folder: { id: 2, parentId: 1, name: 'zzz' },
children: []
},
{
element: { id: 1, name: 'aaa' },
children: []
}
]
}
排序将交换文件夹和元素在这里等,实际的树要大得多,以更高的深度。我怎样才能做到这一点?
我有一种算法,此树找到的东西:
/**
* searchFor {
* type: '',
* index: '',
* value: ''
* }
*/
var search = function (data, searchFor) {
if (data[searchFor.type] != undefined &&
data[searchFor.type][searchFor.index] == searchFor.value) {
return data;
} else if (data.children != null) {
var result = null;
for (var i = 0; result == null && i < data.children.length; i++) {
result = search(data.children[i], searchFor);
}
return result;
}
return null;
};
但老实说,我不知道我怎么能只是排序。我应该怎么做?
我已经试过这样的事情,但它不工作:
/**
* sortBy {
* type: '',
* index: '',
* order: '' // asc/desc
* }
*/
var sort = function (data, sortBy) {
if (data.children != null) {
// sort all children here, but how?
var result = null;
for (var i = 0; result == null && i < data.children.length; i++) {
result = search(data.children[i], sortBy);
}
return result;
}
return null;
}
['data.children.sort(...)'(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)? – Bergi