我具有以下年龄段:
["35 - 44", "18 - 34", "55+", "45 - 54"]
我想对它进行排序,以便:
["18 - 34", "35 - 44", "45 - 54", "55+"]
到目前为止,我有:
arr.map(item => parseInt(item, 10)).sort((a, b) => a - b)
哪个给我:
[18, 25, 35, 65]
但是我不知道现在该怎么办。
感谢帮助。
答案 0 :(得分:3)
请勿通过map
parseInt
,否则将删除字符串开头之后的非数字。只需使用localeCompare
对普通字符串数组进行排序:
console.log(
["35 - 44", "18 - 34", "55+", "45 - 54"].sort((a, b) => a.localeCompare(b))
);
要更加灵活一点,如果也存在个位数的范围,请同时使用numeric: true
选项:
console.log(
["35 - 44", "1-2", "3-4", "18 - 34", "55+", "45 - 54"]
.sort((a, b) => a.localeCompare(b, undefined, {numeric: true}))
);