【发布时间】:2017-01-14 00:46:54
【问题描述】:
我想为对象树中的每个根对子项进行排序 - 我该怎么做?
树:
{
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;
}
【问题讨论】:
标签: javascript algorithm sorting tree