美文网首页
【JS】数组对象自定义排序

【JS】数组对象自定义排序

作者: 睡神疯子 | 来源:发表于2020-07-07 22:38 被阅读0次

replace的语法

stringObject.replace(regexp/substr,replacement)

ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
数组的自定义排序,一种是 replace,一种是较常见易懂的 indexOf

// var obj = {},arr = "甲乙丙丁戊己庚辛壬癸".replace(/(.)/g,function(a,b,c){
//     obj[b] = c;
// });
let sortArr = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸'];
function getIndex(key){
    return sortArr.indexOf(key) != -1 ? sortArr.indexOf(key) : 10000;
}
var _arr = ['其他','乙','丁','戊','己','辛','癸','壬','甲','丙','庚'].sort(function(a,b){
    return getIndex(a) > getIndex(b) ? 1 : -1;
});
console.log(_arr);

数组对象排序

let sortArr1 = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸'];
let sortArr2 = ['临','兵'];
function getIndex(arr, key){
    return arr.indexOf(key) != -1 ? arr.indexOf(key) : 10000;
}
var _arr = [
    {key1: '其他', key2: '兵'},
    {key1: '甲', key2: '临'},
    {key1: '丙', key2: '兵'},
    {key1: '乙', key2: '临'},
    {key1: '乙', key2: '兵'},
    {key1: '丙', key2: '临'},
    {key1: '甲', key2: '兵'},
    {key1: '其他', key2: '临'},
];
_arr.sort(function(a,b){
    if (getIndex(sortArr1, a.key1) == getIndex(sortArr1, b.key1)) {
        if (getIndex(sortArr2, a.key2) > getIndex(sortArr2, b.key2)) {
            return 1
        } else if (getIndex(sortArr2, a.key2) < getIndex(sortArr2, b.key2)) {
            return -1
        } else {
            return 0
        }
    } else {
        return getIndex(sortArr1, a.key1) > getIndex(sortArr1, b.key1) ? 1 : -1
    }
});
console.log(_arr);

相关文章

网友评论

      本文标题:【JS】数组对象自定义排序

      本文链接:https://www.haomeiwen.com/subject/eirtcktx.html