常用,好用的js代码

记录看到或者用到的js代码,长期更新!

判断是否是正整数

number>>>0 === number-0

解析: number-0 转换成数字,再通过位移运算(>>>)判断是否跟原数字相等
补充,这个代码是有范围的,当数字> 999999999 的时候就不成立了
原理可以参考这篇文章, 传送门

安全检查javascript的类型


function typeOf(o){
    let _toString = Object.prototype.toString;
    //列举基本的数据类型和内置的对象类型
    let _types = {
        "undefined" : "undefined",
        "number" : "number",
        "string" : "string",
        "boolean" : "boolean",
        "[object Function]" : "function",
        "[object Array]" : "array",
        "[object Date]" : "date",
        "[object RegExp]" : "regExp",
        "[object Error]" : "error"
    }
    
    return _types[typeof o] || _types[_toString.call(o)] || (o? "object":"null");
    
}

ps: 上述方法适用于基本的数据类型和内置对象,而对于自定义对象是无效的。

判断是不是数组


function isArray(arr){
    return Object.prototype.toString.call(arr) === '[object Array]'
}

判断是不是ios系统

function isIOS(){
    let u = navigator.userAgent;
    let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    return isIOS;
}

转成字符串

function toString (val) {
  return val == null
    ? ''
    : typeof val === 'object'
      ? JSON.stringify(val, null, 2)
      : String(val)
}

中划线转驼峰


function camelize(str){
    return str.replace(/-(\w)/g, function (_, c) { return c ? c.toUpperCase() : ''; })
}

驼峰转中划线


function camelize(str){
    return str.replace(/\B([A-Z])/g, '-$1').toLowerCase();
}

首字母大写


function capitalize(str){
    return str.charAt(0).toUpperCase() + str.slice(1);
}

获取url的query,返回指定key的值

function getUrlQuery(url,key){
    let querys = url.split('?');
    if(querys.length<=1){
        return false;
    }
    let reg = /&?([^=]+)=([^&#]+)/g;
    let obj = {};
    querys.forEach((query,i)=>{
        query.replace(reg,function(re,$1,$2){
            obj[$1]=$2;
        });
    })
    
    if(obj[key]){
        return obj[key];
    }else if(!key){
        return obj;
    }else{
        return false;
    }
}

快速对数据进行降维打击(多维->一维)


var arr = [[1],[2]];
var arr2 = Array.prototype.concat.apply([],arr); //划重点 ,这个只能是二维->一维
var arr3 = arr.flat(Infinity); //多维->一维

h5页面跳转小程序


var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger"){
              wx.miniProgram.getEnv((res)=>{
                 if (res.miniprogram) {
                   // 如果在小程序环境中就跳转
                     wx.miniProgram.redirectTo({
                       url: '.......'
                     });
                     return;
                 }
              })
            }

判断是不是promise对象


function isPromise(val){
    return (
        val!==undefined&&
        val!== null &&
        typeof val.then === 'function' &&
        typeof val.catch === 'function'
    )
}

软绑定

不同于硬绑定,软绑定可以给默认绑定指定一个全局对象和undefined以外的值,那就可以实现和硬绑定相同的效果,同时保留隐式绑定或者显式绑定修改this的能力!


if(! Function.prototype.softBind){
        Function.prototype.softBind = function(obj){
            var fn = this;
            var curried = [].slice.call(arguments,1);
            var bound = function(){
                return fn.apply(
                    (!this || this === (window || global)) ?
                        obj : this,
                    curried.concat.apply(curried,arguments)
                );
            };
            bound.prototype = Object.create(fn.prototype);
            return bound;
        }
    }

判断一个字符串一定可以转成数字

function isNumberic(n){
    return !Number.isNaN(parseFloat(n)) && Number.isFinite(Number(n));
}

这代码比你想象中的要难理解许多

转载于:https://www.cnblogs.com/blogs-xlf/p/10089062.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值