【发布时间】:2017-11-30 15:36:28
【问题描述】:
假设我有一组随机打乱的碎片,属于不同的组。例如:
let pieces = [
{
id: "a1",
startNode: 18,
endNode: 42,
},
{
id: "a3",
startNode: 16,
endNode: 30,
},
{
id: "b2",
startNode: 48,
endNode: 65,
},
{
id: "a2",
startNode: 42,
endNode: 16,
},
{
id: "a4",
startNode: 30,
endNode: 31,
},
{
id: "b1",
startNode: 23,
endNode: 48,
},
];
我希望它们以正确的顺序作为两个数组返回:
ordered = [
[
{
id: "a1",
startNode: 18,
endNode: 42,
},
{
id: "a2",
startNode: 42,
endNode: 16,
},
{
id: "a3",
startNode: 16,
endNode: 30,
},
{
id: "a4",
startNode: 30,
endNode: 31,
},
],[
{
id: "b1",
startNode: 23,
endNode: 48,
},
{
id: "b2",
startNode: 48,
endNode: 65,
},
]
];
它们按匹配的开始和结束节点排序,因此“a2”排在“a1”之后,因为它的 startNode 与“a1”的 endNode 匹配。 “b1”和“b2”属于不同的组,因为它们不与任何“a”组共享起始节点或结束节点。 id 不能用于排序,这里只是为了清楚起见。
关于如何做到这一点的任何想法?我认为它需要某种递归函数,但我无法完全理解。
【问题讨论】:
标签: javascript sorting