如何依据指定参考数组的顺序对目标数组元素进行排序?
按参考数组顺序排序目标数组
给定参考数组:
let array = ["Approved", "Pending", "Not Approved", "Rejected", "Failed"]
目标数组:
let array1 = ["Approved", "Failed", "Pending", "Not Approved", "Pending", "Rejected", "Not Approved"]
需要按参考数组的顺序对目标数组排序,预期输出:
["Approved", "Pending", "Pending", "Not Approved", "Not Approved", "Rejected", "Failed"]
实现方法
利用参考数组的索引作为排序优先级,通过sort方法结合indexOf实现:
let sortedArray = array1.sort((a, b) => array.indexOf(a) - array.indexOf(b)); console.log(sortedArray);
逻辑说明
array.indexOf(a)会返回元素a在参考数组中的位置索引,索引越小,排序优先级越高- 排序时比较两个元素的索引差值:差值为负则
a排在b前面,差值为正则相反,差值为0则保持原有相对位置 - 最终目标数组的元素会完全匹配参考数组的顺序,重复元素也会集中到对应位置
内容的提问来源于stack exchange,提问作者Siva Sai
相关产品推荐
相关产品推荐

