数组方法考察

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));

猜你喜欢

转载自blog.csdn.net/SeriousLose/article/details/127926846