单链表的数据,需要根据next重新排序。
[
{id:3,next:'no'}
{id:2,next:3}
{id:1,next:2},
]
根据next重排
输出
[
{id:1,next:2},
{id:2,next:3}
{id:3,next:'no'}
]
单链表的数据,需要根据next重新排序。
[
{id:3,next:'no'}
{id:2,next:3}
{id:1,next:2},
]
根据next重排
输出
[
{id:1,next:2},
{id:2,next:3}
{id:3,next:'no'}
]
const list = [
{ id: 3, next: 'no' },
{ id: 2, next: 3 },
{ id: 1, next: 2 },
]
const map = new Map(list.map(item => [item.id, item]))
const set = new Set(list.map(item => item.next))
// id没有对应的next,则为头节点
const [firstNode] = list.filter(item => !set.has(item.id))
let nextNode = map.get(firstNode.next)
const sortedList = [firstNode]
while (nextNode) {
sortedList.push(nextNode)
nextNode = map.get(nextNode.next)
}
console.log(sortedList)
var arr = [
{id:3,next:'no'},
{id:2,next:3},
{id:1,next:2},
].sort((a, b) => {
if(a.next == 'no'){
return 1;
}
if(b.next == 'no'){
return -1;
}
return a.next - b.next
});
9 回答9.4k 阅读
6 回答5.1k 阅读✓ 已解决
5 回答3.7k 阅读✓ 已解决
3 回答10.5k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答10.1k 阅读
4 回答7.4k 阅读