您可以使用可重用的排序函数。
Array.prototype.order = function (prop, methods = {}) {
if (prop?.constructor == Object) {
methods = prop;
prop = null;
}
const [orderType_a, orderType_b] = methods.reverse ? [1, -1] : [-1, 1];
const $ = x => prop
? methods.insensitive
? String(x[prop]).toLowerCase()
: x[prop]
: methods.insensitive
? String(x).toLowerCase()
: x;
const fn = (a, b) => $(a) < $(b) ? orderType_a : $(b) < $(a) ? orderType_b : 0;
return this.sort(fn);
};
它可用于对数组和数组中的对象进行排序。
let items = [{ x: "Z" }, 3, "1", "0", 2, { x: "a" }, { x: 0 }];
items
.order("x", { insensitive: 1 })
// [ { x: 0 }, { x: 'a' }, 3, '1', '0', 2, { x: 'Z' } ]
.order({ reverse: 1 })
// [ { x: 0 }, { x: 'a' }, 3, 2, { x: 'Z' }, '1', '0' ]
.sort(x => typeof x == "string" || typeof x == "number" ? -1 : 0)
// [ '0', '1', 2, 3, { x: 0 }, { x: 'a' }, { x: 'Z' } ]
1nd(可选)>对数组中包含的对象进行排序。2rd是方法>{reverse:any,不敏感:any}