这是使用订单作为模板的另一种方式,我们通过reduce() 填写并删除空位
let order = "SM,MD,2X,3X,4X,5X,LG,XL".split(","); // our example order
"3X,LG,XL,4X".split(',') // array-ify the input
.reduce((b,a) => {b[order.indexOf(a)]=a; return b}, // fill the available slot in the accumulator
[].fill('',0,order.length)) //... which was pre-populated with empty indexes from fill()
.filter(e=>e) //filter out the empties
它非常适合一行
let sizes = "3X,LG,XL,4X".split(',').reduce((b,a) => {b[order.indexOf(a)]=a; return b},[].fill('',0,order.length)).filter(e=>e)
它使用reduce按照示例order的顺序填充可用大小的数组,然后过滤掉空白
let order = "SM,MD,2X,3X,4X,5X,LG,XL".split(",");
const sortSizes = (s) => {
return s.split(',').reduce((b,a) => {b[order.indexOf(a)]=a; return b},[].fill('',0,order.length)).filter(e=>e)
}
let input="3X,LG,XL,4X";
//Output: LG,XL,3X,4X
console.log(sortSizes(input));
input = "LG,XL,2X,5X,2X"
//Output: SM,MD,2X,2X,5X
console.log(sortSizes(input));