单链表的数据,需要根据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
});
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决