Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.
let list = [
{id:'1',before:'2'},
{id:'2',before:'3'},
{id:'3',before:'6'},
{id:'5',first:true},
{id:'6',last:true},
{id:'7',before:'5'},
{id:'8',after:'6'},
]
// ['7', '5', '1', '2', '3', '6', '8']
// before 表示该数据在id之前;{id:'1',before:'2'}, 1在2之前;
// after 表示该数据在id之后; {id:'8',after:'6'}, 8在6之后;
// first 表示放在最前边;
// last 表示放在最后边;
function sort(list) {
let ary = [];
list.forEach(item=>{
if(item['first']){
ary.unshift(item);
}
if(item['last']){
ary.push(item);
}
if(item['before']){
if(ary.length == 0){
ary.push(item);
}else{
let index = ary.findIndex(a=> a.before == item.id)
ary.splice(index+1,0,item);
}
}
if(item['after']){
if(ary.length == 0){
ary.push(item);
}else{
let index = ary.findIndex(a=> a.id == item.after)
ary.splice(index+1,0,item);
}
}
})
return ary.map(item=>item.id);
}
console.log(sort(list));