Javascript 按顺序排序数组

标签 javascript arrays sorting

您好,我正在开发一个聊天应用程序,我想对新消息进行排序并根据时间保持历史记录顺序。

例如,我将聊天消息放在这样的数组中,现在我使用每个消息对象上的“时间”键对它们进行排序!

[{"user":"a", "msg":"Hi ", "read":true, "time":1}
{"user":"b", "msg":"Hi ", "read":false, "time":2}
{"user":"c", "msg":"Hi ", "read":false, "time":3}
{"user":"d", "msg":"Hi ", "read":true, "time":4}
{"user":"e", "msg":"Hi ", "read":true, "time":5}]

我还如何使用“读取”键对它们进行排序,其中所有错误值都应位于顶部,但其余对象应使用“时间”键进行排序。

比如像这样

[{"user":"b", "msg":"Hi ", "read":false, "time":2}
{"user":"c", "msg":"Hi ", "read":false, "time":3}
{"user":"a", "msg":"Hi ", "read":true, "time":1}
{"user":"d", "msg":"Hi ", "read":true, "time":4}
{"user":"e", "msg":"Hi ", "read":true, "time":5}]

最佳答案

你可以使用 Array#sort以及排序顺序的回调并链接所需的排序参数。

此回调在计算中使用 bool 值到数字的隐式转换。

var array = [{ "user": "a", "msg": "Hi ", "read": true, "time": 1 }, { "user": "b", "msg": "Hi ", "read": false, "time": 2 }, { "user": "c", "msg": "Hi ", "read": false, "time": 3 }, { "user": "d", "msg": "Hi ", "read": true, "time": 4 }, { "user": "e", "msg": "Hi ", "read": true, "time": 5 }];

array.sort(function (a, b) {
    return a.read - b.read || a.time - b.time;
});

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

关于Javascript 按顺序排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40060818/

相关文章:

javascript - Typescript 找不到本地 es6 模块;错误 TS2307 : Cannot find module

python - 带有图像的 Numpy.putmask

C 在数组中分配错误的索引

jquery - 如何按名称(前缀)显示图像

javascript - Redis 命令对键进行排序

javascript - Node JS + Express : Render subviews in a main view

javascript - 如何使用 javascript 通过循环获取 Highcharts 气泡图的正确对象

php - 我想通过单击编辑来选择整行进行编辑

javascript - 两个签名添加不起作用

python - 基于python中的两个变量排序