var x = ['1','2A','2B','2AA','2','10A','10','11','12A','12B','12']
所需的输出
sortedArray = ['1','2','2A','2B','2AA','10','10A','11','12','12A','12B']
var x = ['1','2A','2B','2AA','2','10A','10','11','12A','12B','12']
_.sortBy(x);
//lodash result
["1", "10", "10A", "11", "12", "12A", "12B", "2", "2A", "2AA", "2B"]
答案 0 :(得分:3)
您可以使用parseInt
获取数字部分并sort
。如果a
和b
的编号相同,则根据其length
对它们进行排序。如果它们的长度相同,则使用localeCompare
let array = ['1','2A','2B','2AA','2','10A','10','11','12A','12B','12'];
array.sort((a, b) => parseInt(a) - parseInt(b)
|| a.length - b.length
|| a.localeCompare(b));
console.log(array)
答案 1 :(得分:2)
您可以使用自定义sot函数,在自定义函数中分别将数字和非数字分开,并基于num进行排序,如果两者相等,则比较非数字部分。
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = Schema({
categories:{
type: array,
"default": []
}
});
module.exports = mongoose.model('User', UserSchema);