【发布时间】:2020-03-14 08:52:16
【问题描述】:
我有一些数据可以是以下格式,
let items = [
{
number: "1"
},
{
number: "5"
},
{
number: "3,1"
},
{
number: "3,11"
},
{
number: "3,3"
},
{
number: "3,2"
}
]
我希望能够按以下优先级对其进行排序... 1.按“数字”值 1. 在“数字”中可能的逗号左侧的第一个“列” 2. 通过“数字”字段中可能的逗号右侧的任何内容
因此,我希望看到“1”、“3,1”、“3,2”、“3,3”、“3,11”、“5”
我正在使用下划线进行排序并提出以下内容。
items = _.sortBy(items, function(item) {
let sort = item.number;
if (item.number.indexOf(",") != -1) {
const split = item.number.split(",");
sort = parseInt(split[0]);
}
return sort;
});
items = _.sortBy(items, function(item) {
let sort = item.number;
if (item.number.indexOf(",") != -1) {
const split = item.number.split(",");
sort = parseInt(split[1]);
}
return sort;
});
console.log(items);
这给了我 "1" , "3,1", "3,2", "3,3", "5", "3,11" 接近但不完全正确。关于如何有效解决这个问题的任何想法? (我知道我可以用下划线链接排序)我不偏爱下划线,也可以使用 vanilla JS
【问题讨论】:
-
确认。错字。刚刚修复了这个,但实际结果在“5”之后有“3,11”
标签: javascript sorting underscore.js