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);
网友评论