首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何分类破折号-分开的数字范围?

如何分类破折号-分开的数字范围?
EN

Stack Overflow用户
提问于 2022-03-28 22:37:17
回答 4查看 163关注 0票数 0

我有如下一系列数字:

const a = ["11-50", "2-10", "1", "51-200"]

我想把它们分类,就像

["1", "2-10", "11-50", "51-200"]

我尝试过这两种排序方法,但都没有结果:

a.sort((a, b) => a - b)

a.sort()

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-03-28 22:40:56

我们可以尝试在每个范围内对下限数字进行排序:

代码语言:javascript
运行
复制
const input = ["11-50", "2-10", "1", "51-200"];
input.sort(function(a, b) {
    return parseInt(a.split("-")[0]) - parseInt(b.split("-")[0]);
});
console.log(input);

票数 4
EN

Stack Overflow用户

发布于 2022-03-28 22:40:46

免责声明:parseInt可能并不总是做你想做的事情,但是在这个例子中,它应该能工作!

代码语言:javascript
运行
复制
a.sort((a, b) => parseInt(a) - parseInt(b));
票数 1
EN

Stack Overflow用户

发布于 2022-03-28 22:48:24

更正式一点,编写一些代码,将表示形式从字符串改为数字,然后返回.

代码语言:javascript
运行
复制
const string2Range = string => string.split('-').map(parseInt);
const range2String = range => `${range[0}-${range[1]}`;

定义什么使范围比另一个小..。

代码语言:javascript
运行
复制
// low value?
const compLow = (rangeA, rangeB) => rangeA[0] - rangeB[0]

// midpoint value?
const midpoint = range => (range[1] - range[0]) / 2;
const compMid = (rangeA, rangeB) => midpoint(rangeA) - midpoint(rangeB);

// something else??

然后转换,排序,转换回(假设需要字符串输出)

代码语言:javascript
运行
复制
let input = ["11-50", "2-10", "1", "51-200"]
let ranges = input.map(string2Range);
ranges.sort(compLow);  // or another you define
let output = ranges.map(range2String)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71654445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档