- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想按 ID 和名称对对象数组进行排序。首先应该按 id 升序排序。然后应该按名称升序排序。
排序功能
<script>
$(document).ready(function() {
var list = [{
"id": "ts1",
"name": "TS1"
}, {
"id": "ts10",
"name": "TS10"
}, {
"id": "ts11",
"name": "TS11"
}, {
"id": "ts12",
"name": "TS12"
}, {
"id": "ts13",
"name": "TS2"
}, {
"id": "ts13",
"name": "TS1"
}, {
"id": "ts13",
"name": "TS3"
}, {
"id": "ts14",
"name": "TS14"
}, {
"id": "ts15",
"name": "TS15"
}, {
"id": "ts16",
"name": "TS16"
}, {
"id": "ts17",
"name": "TS17"
}, {
"id": "ts18",
"name": "TS18"
}, {
"id": "ts19",
"name": "TS19"
}, {
"id": "ts2",
"name": "TS2"
}, {
"id": "ts20",
"name": "TS20"
}, {
"id": "ts21",
"name": "TS21"
}, {
"id": "ts22",
"name": "TS22"
}, {
"id": "ts3",
"name": "TS3"
}, {
"id": "ts4",
"name": "TS4"
}, {
"id": "ts5",
"name": "TS5"
}, {
"id": "ts6",
"name": "TS6"
}, {
"id": "ts7",
"name": "TS7"
}]
list.sort(Sort_ID_Name);
console.log(list);
});
function Sort_ID_Name(a, b) {
try {
var aID = a.id.toLowerCase();
var bID = b.id.toLowerCase();
var aName = a.name.toLowerCase();
var bName = b.name.toLowerCase();
return ((aID < bID) ? -1 : ((aID > bID) ? 1 : ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0))));
} catch (err) {}
}
</script>
当前排序列表显示如下:
{id: "ts1", name: "TS1"}
{id: "ts10", name: "TS10"}
{id: "ts11", name: "TS11"}
{id: "ts12", name: "TS12"}
{id: "ts13", name: "TS1"}
{id: "ts13", name: "TS2"}
{id: "ts13", name: "TS3"}
{id: "ts14", name: "TS14"}
{id: "ts15", name: "TS15"}
{id: "ts16", name: "TS16"}
....
理想的状态是这样的
{id: "ts1", name: "TS1"}
{id: "ts2", name: "TS2"}
...
{id: "ts10", name: "TS10"}
{id: "ts11", name: "TS11"}
{id: "ts12", name: "TS12"}
{id: "ts13", name: "TS1"}
{id: "ts13", name: "TS2"}
{id: "ts13", name: "TS3"}
{id: "ts14", name: "TS14"}
{id: "ts15", name: "TS15"}
{id: "ts16", name: "TS16"}
....
该函数仅在列表很短时有效,但当列表很长时则效果不佳。查看现场演示-https://jsfiddle.net/0xLd6sms/2/
最佳答案
您可以使用自定义排序方法 localeComapre()
指定numeric: true
选项,它将智能识别数字
var list = [{ "id": "ts1", "name": "TS1" }, { "id": "ts10", "name": "TS10" }, { "id": "ts11", "name": "TS11" }, { "id": "ts12", "name": "TS13" }, { "id": "ts13", "name": "TS2" }, { "id": "ts13", "name": "TS1" }, { "id": "ts13", "name": "TS3" }, { "id":"ts14", "name": "TS14" }, { "id": "ts15", "name": "TS15" }, { "id": "ts16", "name": "TS16" }, { "id": "ts17", "name": "TS17" }, { "id": "ts18", "name": "TS18" }, { "id": "ts19", "name": "TS19" }, { "id": "ts2", "name": "TS2" }, { "id": "ts20", "name":"TS20" }, { "id": "ts21", "name": "TS21" }, { "id": "ts22", "name": "TS22" }, { "id": "ts3", "name": "TS3" }, { "id": "ts4", "name": "TS4" }, { "id": "ts5", "name": "TS5" }, { "id": "ts6", "name": "TS6" }, { "id": "ts7", "name": "TS7" }];
list.sort((a,b) => a.id.localeCompare(b.id, undefined, {numeric: true}) || a.name.localeCompare(b.name, undefined, {numeric: true}));
console.log(list);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 在 Javascript 中按 2 个条件对数组进行排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47336838/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!