我需要按照特定顺序对数据进行排序,如下所示.
const sortBy = ['b','a','c','e','d'] const data = ['a','d','e']
我知道如何通过降序/降序进行排序
console.log(data.sort((a, b) => a > b)) //["a", "d", "e"] console.log(data.sort((a, b) => a < b)) //["e", "d", "a"]
但是可以使用.sort
按特定顺序排序吗?例如,低于我想要的订单sortBy
我目前正在通过在排序数组和我的数据之间创建一组公共项来实现此目的.
const commonItems = getCommonItemsInArrays(sortBy,data) console.log(commonItems.map(item => item)) //["a", "e", "d"] function getCommonItemsInArrays(array1,array2){ return array1.filter(n => array2.indexOf(n) >= 0) }
这似乎工作正常,但我想知道是否有办法处理这个通过sort
?
您的.sort()
回调可以做任何事情,以确定任何给定项目是否应该在任何其他给定项目之前或之后.因此,它可以查找sortBy
数组中当前项的索引并相应地继续:
const sortBy = ['b','a','c','e','d']
const data = ['a','d','e']
console.log( data.sort((a,b) => sortBy.indexOf(a) - sortBy.indexOf(b)) )