我想订购以下数组:
如果我执行以下操作:
_.orderBy(list, function (e) { return e.name, ['desc'] })
它将返回:
正如您所看到的那样,它可以按字母顺序对列表进行正确排序,但不会考虑字符串末尾的数字。
非常感谢您的帮助:)
答案 0 :(得分:2)
您可以使用localeCompare
将numeric
选项指定为true
,从而对数组进行排序。
var data = [{name: '2014 Autumn Grth 10'},{name: '2014 Autumn Grth 4'},{name: '2014 Autumn Grth 5'},{name: '2014 Autumn Ethical Balanced'},{name: '2014 Autumn Grth 6'},{name: '2014 Autumn Grth 7'},{name: '2014 Summer Grth 7'},{name: '2014 Autumn Grth 9'}];
var result = data.slice().sort((a,b) => a.name.localeCompare(b.name, undefined, {numeric: true}));
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }