使用JavaScript的sort方法对树JSON对象进行双重排序的方法如下:
下面是一个示例代码:
// 树形JSON对象
const treeData = [
{ id: 1, name: 'Node 1', parentId: null },
{ id: 2, name: 'Node 1.1', parentId: 1 },
{ id: 3, name: 'Node 1.2', parentId: 1 },
{ id: 4, name: 'Node 1.2.1', parentId: 3 },
{ id: 5, name: 'Node 1.2.2', parentId: 3 },
{ id: 6, name: 'Node 2', parentId: null },
{ id: 7, name: 'Node 2.1', parentId: 6 },
{ id: 8, name: 'Node 2.2', parentId: 6 },
];
// 转换为扁平数组
function flattenTree(tree, parentId = null, depth = 0) {
return tree.reduce((arr, node) => {
if (node.parentId === parentId) {
arr.push({ ...node, depth });
arr.push(...flattenTree(tree, node.id, depth + 1));
}
return arr;
}, []);
}
// 比较函数
function compareNodes(node1, node2) {
// 根据第一个排序条件进行比较
if (node1.name < node2.name) {
return -1;
}
if (node1.name > node2.name) {
return 1;
}
// 如果第一个排序条件相同,则根据第二个排序条件进行比较
if (node1.depth < node2.depth) {
return -1;
}
if (node1.depth > node2.depth) {
return 1;
}
return 0;
}
// 对树形JSON对象进行双重排序
const sortedTree = flattenTree(treeData).sort(compareNodes);
console.log(sortedTree);
这段代码将根据节点名称和深度级别对树形JSON对象进行排序。你可以根据自己的需求修改比较函数来实现不同的排序规则。
对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议你参考腾讯云的文档和官方网站,查找与云计算、前端开发、后端开发等相关的产品和服务。
领取专属 10元无门槛券
手把手带您无忧上云