简单整理常见对数组字符串操作的封装
.移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
console.log(move([2,3,4,5,6,11,1,1,1,1,1,1,4,5,6],1))
function move(arr,item) {
return arr.filter(function (arr) {
return arr !== item
})
}
查找数字类数组中最大值
console.log(maxArr([1,2,3,4,5]))
function maxArr(arr) {
return Math.max.apply(null,arr)
}
查找数字类数组中最小值
console.log(maxArr([1,2,3,4,5]))
function minArr(arr) {
return Math.max.apply(null,arr)
}
获取数组的随机一个数
console.log(randomOne([1,2,3,4,5,6]))
function randomOne(arr) {
return arr[Math.floor(Math.random()*arr.length)];
}
/*
1:首字母大写
2:首字母小写
3:大小转换需要均匀分布两端
4:全部大写
5:全部大写
*/
function changeCase(str, type) {
switch (type){
case 1: return str.replace(/^(\w)(\w+)/,function (v,v1,v2,v3) {
console.log(v)//被匹配的数组
console.log(v1)//是第一个捕获组
console.log(v2)//是第二个捕获组
console.log(v3)//第一个被匹配的index
return v1.toUpperCase() + v2.toLowerCase();
});
case 2:return str.replace(/^(\w)(\w+)/,function (v,v1,v2,v3) {
console.log(v)//被匹配的数组
console.log(v1)//是第一个捕获组
console.log(v2)//是第二个捕获组
console.log(v3)//第一个被匹配的index
return v1.toLowerCase() + v2.toUpperCase();
});
case 3:return str.replace(/^([a-z]+)([A-Z]+)/,function (v,v1,v2,v3) {
console.log(v)//被匹配的数组
console.log(v1)//是第一个捕获组
console.log(v2)//是第二个捕获组
console.log(v3)//第一个被匹配的index
return v1.toUpperCase() + v2.toLowerCase();
});
case 4: return str.toUpperCase();
case 5: return str.toLowerCase();
}
}
console.log(changeCase("qweqweWEWREWDSFGDJJ",3))
////字符串循环复制
function repeatStr(str,count) {
var text= "";
for(var i=0;i<count;i++){
text +=str
}
return text;
}
//////检测字符串
function checkType(str,type) {
switch(type){
case "email":
return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
case "phone":
return /^1[3|4|5|7|8][0-9]{9}$/.test(str);
case "tel":
return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
case "numer":
return /[^0-9]$/.test(str);
case "numerAll":
return /[0-9]$/.test(str);
case "english":
return /^[a-zA-Z]+$/.test(str);
case "chinese":
return /^[\u4E00-\u9FA5]+$/.test(str);
case "lower":
return /^[a-z]+$/.test(str);
case "upper":
return /^[A-Z]+$/.test(str);
}
}
///检测密码强度
function checkpwd(str){
var nowLv=0;
if (str.length<6){
return nowLv;
}
if (/[0-9]/.test(str)){
nowLv++
}
if(/[a-z]/.test(str)){
nowLv++
}
if (/[A-Z]/.test(str)){
nowLv++
}
if (/[\.|-|_]/.test(str)){
nowLv++
}
return nowLv
}
////Math.random()输出0到1(包括0,不包含1)的随机数。
toString(16)将随机数转换为16进制的字符串。
substring(2)截取字符串,因为随机数大于等于0小于1,前两位是“0.”,substring(2)从第三位开始截取到最后。
function randomNumber(count) {
return Math.random().toString(count).substring(5);
}
///查找字符串出现重复的字符串返回次数
function countStr(str,strSplit) {
return str.split(strSplit).length-1;
}
/////////ES6简便的去重的方法
function removeRepeatArray(arr) {
return Array.from(new Set(arr))
}
//返回数组(字符串)一个元素出现的次数
function getEleCount(obj,ele){
var num=0;
for(var i=0,len=obj.length;i<len;i++){
if (obj[i] ===ele){
num++
}
}
}
///////返回数组出现的元素和次数
rank是最后排好序列展示的个数,ranktype为1 生序显示
function getCount(arr,rank,ranktype) {
var obj={},k,arr1=[];
//记录每一元素出现的次数
for(var i=0,len=arr.length;i<len;i++){
k=arr[i];
console.log(obj[k])
if(obj[k]){
obj[k]++;
}else {
obj[k]=1;
}
}
//保存结果 el-元素,count-出现次数
for(var o in obj){
arr1.push({el:o,count:obj[o]});
}
//排序(降序)
arr1.sort(function (n1,n2) {
return n2.count - n1.count
})
//如果ranktype为1则为生序,反转数据
if (ranktype===1){
arr1=arr1.reverse();
}
var rank1=rank || arr1.length;
return arr1.slice(0,rank1)
}
//检测对象是否有哪个类名
// /\s+/ 匹配任何空白符,包括\n,\r,\f,\t,\v等(换行、回车、空格、tab等)
var ww=document.getElementsByClassName('qq')
function hasClass(obj,calssStr) {
//把字符串转换成数组
var arr=obj.className.split(/\s+/);
console.log(arr)
return (arr.indexOf(calssStr)==-1)?false:true
}
//随机生成颜色
function randomColor(){
return "rgba(" + randomNumber(255) + ',' + randomNumber(255) + "," + randomNumber(255);
}