题目
最近遇到一个笔试题,如下,求大佬讲解一下,面试官提示可以使用递归,但是小弟确实没有头绪,希望各位大佬看看
/**
* 排序后输出 id
* before 2,意思是排在 id 2 的前面,after 5,意思是排在 id 5 的后面
* first 意思是排数组最前面,last 意思是排在数组最后面,可能有多个 first 和 last
* @param {Array<Object>} list
* @returns {Array<string>}
* @example
* [
* { 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'];