按顺序排序Javascript数组

Ced*_*oza 1 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}]
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用"读取"键对它们进行排序,其中所有错误值应该位于顶部,但其余对象应使用"时间"键进行排序.

比如这样

[{"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}]
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 5

您可以使用Array#sort和回调排序顺序并链接所需的排序参数.

此回调使用通过计算将布尔值隐式转换为数字.

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);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)