js 类库的封装

一 : 字符串的封装

    1.1 : 去除字符串空格
```
//去除空格  type 1-所有空格  2-前后空格  3-前空格 4-后空格
function trim(str,type){
    switch (type){
        case 1:return str.replace(/\s+/g,"");
        case 2:return str.replace(/(^\s*)|(\s*$)/g, "");
        case 3:return str.replace(/(^\s*)/g, "");
        case 4:return str.replace(/(\s*$)/g, "");
        default:return str;
    }
}
```
1.2 : 字母大小写切换


```
/*type

1:首字母大写
2:首页母小写
3:大小写转换
4:全部大写
5:全部小写
* */
//changeCase(‘asdasd’,1)
//Asdasd
function changeCase(str,type)
{
function ToggleCase(str) {
var itemText = “”
str.split(“”).forEach(
function (item) {
if (/^([a-z]+)/.test(item)) {
itemText += item.toUpperCase();
}
else if (/^([A-Z]+)/.test(item)) {
itemText += item.toLowerCase();
}
else{
itemText += item;
}
});
return itemText;
}

switch (type) {
    case 1:
        return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {
            return v1.toUpperCase() + v2.toLowerCase();
        });
    case 2:
        return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {
            return v1.toLowerCase() + v2.toUpperCase();
        });
    case 3:
        return ToggleCase(str);
    case 4:
        return str.toUpperCase();
    case 5:
        return str.toLowerCase();
    default:
        return str;
}

}

```

2.3 : 字符串循环复制

//repeatStr(str->字符串, count->次数)
//repeatStr('123',3)
//"123123123"
function repeatStr(str, count) {
    var text = '';
    for (var i = 0; i < count; i++) {
        text += str;
    }
    return text;
}

2.4 :字符串替换

//字符串替换(字符串,要替换的字符,替换成什么)
function replaceAll(str,AFindText,ARepText){
   raRegExp = new RegExp(AFindText,"g");
   return str.replace(raRegExp,ARepText);
}

2.5 : 检测密码强度

//checkPwd('12asdASAD')
//3(强度等级为3)
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;
}

2.6 :随机的数字验证码

//参数n是生成随机码的位数
function  random(n) {
            var num = '';
            for(var i=0;i<n;i++){
                num+=Math.floor(Math.random()*10);
            }
            return num;
        }

2.7 : 字符串出现的次数

在字符串'sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967'中找出'blog'的出现次数。代码如下
function countStr (str,strSplit){
    return str.split(strSplit).length-1
}

二 : 数组的操作

2.1 : 数组打乱

//用这种方法打乱数组之后,原来的数组顺序还是不变的
function upsetOrder(arrOld){
        var result=[],_length=arrOld.length,arr;
        arr=Object.assign([],arrOld)
        for(var i=0,len=arr.length;i<len;i++){
            result.push(arr.splice(Math.floor(Math.random()*arr.length),1)[0]);
        }
        return result;
    }

2.2 数组去重

function removeReapt(arrOld){
    var arr=[];
    for(var i=0,len=arrOld.length;i<len;i++){
        if(arr.indexOf(arrOld[i])==-1){
            arr.push(arrOld[i]);
        }
    }
    return arr;
}

2.3 : 找出数组中的最大值和最小值

function maxArr(arr){
    return Math.max.apply(null,arr);
}
function minArr(arr){
    return Math.min.apply(null,arr);
}

2.4 :数组的求和,平均值

//这里主要针对的是数字类型的数组
function sumArr(arr){
    var sumText=0;
    for(var i=0,len=arr.length;i<len;i++){
        sumText+=arr[i];
    }
    return sumText
}
//平均值,小数点可能会有很多位,这里不做处理,处理了使用就不灵活了!
function covArr(arr){
    var sumText=sumArr(arr);
    var covText=sumText/arr.length;
    return covText
}

2.5 :从数组中随机获取元素

//randomOne([1,2,3,6,8,5,4,2,6])
//2
//randomOne([1,2,3,6,8,5,4,2,6])
//8
//randomOne([1,2,3,6,8,5,4,2,6])
//8
//randomOne([1,2,3,6,8,5,4,2,6])
//1
function randomOne(arr) {
    return arr[Math.floor(Math.random() * arr.length)];
}

三:关于DOM的操作

3.1 :检测是否含有某一个类名


function hasClass(obj,classStr){ 
    var arr=obj.className.split(/\s+/); //这个正则表达式是因为class可以有多个,判断是否包含 
    return (arr.indexOf(classStr)==-1)?false:true;
}
//例子:
<div class="ss nnn" id="div1"></div>
<script>
        function hasClass(obj,classStr){
            var arr=obj.className.split(/\s+/); //这个正则表达式是因为class可以有多个,判断是否包含
            return (arr.indexOf(classStr)==-1)?false:true;
        }

        console.log(hasClass(document.getElementById('div1'),'ss'));//返回为true;
    </script>

   ```
   3.2 : 添加类名

    ```
    function addClass(obj,classStr){
        if (!this.hasClass(obj,classStr)){obj.className += " " + classStr};
    }
    ```
3.3 : 删除类名

function removeClass(obj,classStr){
if (this.hasClass(obj,classStr)) {
var reg = new RegExp(‘(\s|^)’ + classStr + ‘(\s|$)’);
obj.className = obj.className.replace(reg, ”);
}
},

3.4 :替换类名('被替换的类名',‘替换的类名’)

function replaceClass(obj,newName,oldName) {
removeClass(obj,oldName);
addClass(obj,newName);
}

3.5 : 获取兄弟节点

function siblings(obj){
var a=[];//定义一个数组,用来存o的兄弟元素
var p=obj.previousSibling;
while(p){//先取o的哥哥们 判断有没有上一个哥哥元素,如果有则往下执行 p表示previousSibling
if(p.nodeType===1){
a.push(p);
}
p=p.previousSibling//最后把上一个节点赋给p
}
a.reverse()//把顺序反转一下 这样元素的顺序就是按先后的了
var n=obj.nextSibling;//再取o的弟弟
while(n){//判断有没有下一个弟弟结点 n是nextSibling的意思
if(n.nodeType===1){
a.push(n);
}
n=n.nextSibling;
}
return a;
},

3.6 : 给元素设置样式;

function css(obj,json){
for(var attr in json){
obj.style[attr]=json[attr];
}
}

四 : 其它的设置

4.1 : 现金额大写转换函数

//upDigit(168752632)
//”人民币壹亿陆仟捌佰柒拾伍万贰仟陆佰叁拾贰元整”
//upDigit(1682)
//”人民币壹仟陆佰捌拾贰元整”
//upDigit(-1693)
//”欠人民币壹仟陆佰玖拾叁元整”
function upDigit(n)
{
var fraction = [‘角’, ‘分’,’厘’];
var digit = [‘零’, ‘壹’, ‘贰’, ‘叁’, ‘肆’, ‘伍’, ‘陆’, ‘柒’, ‘捌’, ‘玖’];
var unit = [ [‘元’, ‘万’, ‘亿’], [”, ‘拾’, ‘佰’, ‘仟’] ];
var head = n < 0? ‘欠人民币’: ‘人民币’;
n = Math.abs(n);
var s = ”;
for (var i = 0; i < fraction.length; i++)
{
s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, ”);
}
s = s || ‘整’;
n = Math.floor(n);
for (var i = 0; i < unit[0].length && n > 0; i++)
{
var p = ”;
for (var j = 0; j < unit[1].length && n > 0; j++)
{
p = digit[n % 10] + unit[1][j] + p;
n = Math.floor(n / 10);
}
//s = p.replace(/(零.)*零 /, '').replace(/^ /, ‘零’)+ unit[0][i] + s;
s = p+ unit[0][i] + s;
}
return head + s.replace(/(零.)*零元/, ‘元’).replace(/(零.)+/g, ‘零’).replace(/^整$/, ‘零元整’);
}



4.2 : 设置url参数

//获取url参数
function getUrlPrmt(url) {
url = url ? url : window.location.href;
let _pa = url.substring(url.indexOf(‘?’) + 1), _arrS = _pa.split(‘&’), _rs = {};
for (let i = 0, _len = _arrS.length; i < _len; i++) {
let pos = _arrS[i].indexOf(‘=’);
if (pos == -1) {
continue;
}
let name = _arrS[i].substring(0, pos), value = window.decodeURIComponent(_arrS[i].substring(pos + 1));
_rs[name] = value;
}
return _rs;
}

//获取参数另外一种方法:

//name :表示我们要获取的地址栏参数的key url表示地址栏,defalutValue:表示默认的值
 function (name, url, defaultValue) {
        name = name.toLowerCase();
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", 'i');
        var search = url || window.location.href;
        search = search.substr(search.indexOf('?') + 1);
        var r = search.match(reg);
        if (r != null) return decodeURIComponent(r[2]);
        else if (defaultValue) return defaultValue;
        else
            return null;
    }

//设置url参数
//setUrlPrmt({‘a’:1,’b’:2})
//a=1&b=2
function setUrlPrmt(obj) {
let _rs = [];
for (let p in obj) {
if (obj[p] != null && obj[p] != ”) {
_rs.push(p + ‘=’ + obj[p])
}
}
return _rs.join(‘&’);
}

4.3 : 随机返回一个范围的数字

function randomNumber(n1,n2){
//randomNumber(5,10)
//返回5-10的随机整数,包括5,10
if(arguments.length===2){
return Math.round(n1+Math.random()*(n2-n1));
}
//randomNumber(10)
//返回0-10的随机整数,包括0,10
else if(arguments.length===1){
return Math.round(Math.random()*n1)
}
//randomNumber()
//返回0-255的随机整数,包括0,255
else{
return Math.round(Math.random()*255)
}
}

4.4 : 生成一个随机的颜色

//这个函数的使用要和上面的获取随机数的函数randomNumber()配合使用;
function randomColor(){
//randomNumber是上面定义的函数
//写法1
return ‘rgb(’ + randomNumber(255) + ‘,’ + randomNumber(255) + ‘,’ + randomNumber(255) + ‘)’;

//写法2
return '#'+Math.random().toString(16).substring(2).substr(0,6);

//写法3
var color='#';
for(var i=0;i<6;i++){
    color+='0123456789abcdef'[randomNumber(15)];
}
return color;

}


4.5: 倒计时函数

//到某一个时间的倒计时
//getEndTime(‘2017/7/22 16:0:0’)
//”剩余时间6天 2小时 28 分钟20 秒”
function getEndTime(endTime){
var startDate=new Date(); //开始时间,当前时间
var endDate=new Date(endTime); //结束时间,需传入时间参数
var t=endDate.getTime()-startDate.getTime(); //时间差的毫秒数
var d=0,h=0,m=0,s=0;
if(t>=0){
d=Math.floor(t/1000/3600/24);
h=Math.floor(t/1000/60/60%24);
m=Math.floor(t/1000/60%60);
s=Math.floor(t/1000%60);
}
return “剩余时间”+d+”天 “+h+”小时 “+m+” 分钟”+s+” 秒”;
}

“`

参考地址:https://segmentfault.com/a/1190000010225928

猜你喜欢

转载自blog.csdn.net/qq_34543252/article/details/79174569
今日推荐