记录看到或者用到的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){
var reg = /([a-z]?)-([a-z])/g;
var index = 0;
return str.replace(reg,function(r,$1,$2){ if($1){
return $2?$1+$2.toUpperCase():'';
}else{
return $2;
} })
}

驼峰转中划线


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 getUrlParam(sUrl, sKey) {
var index = sUrl.indexOf('?');
var urlStr = sUrl.substr(index+1);
var reg = /&?([^=]+)=([^&#]+)/g;
var result = {};
urlStr.replace(reg,function(re,$1,$2){
if(result[$1]){
var item = result[$1];
result[$1] = [].concat(item,$2);
}else{
result[$1] = $2;
}
});
if(sKey){
return result[sKey]||'';
}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));
}

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

JSON序列化Error对象

如果对error对象直接用JSON.stringify(),直接打印"{}"; 那是因为error对象的属性是不可遍历的;可以用Object.getOwnPropertyNames()获取自身的属性

var error = new Error('this is a error message');
JSON.stringify(error,Object.getOwnPropertyNames(error));

格式化日期

输入一个date对象,并根据格式输出


function formatDate(date,format){
var o = {
'y+': date.getFullYear(),
'M+': date.getMonth()+1,
'd+': date.getDate(),
'H+': date.getHours(),
'h+': date.getHours()> 12? date.getHours()-12: date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'w': date.getDay()
}; var weekends = ['日', '一', '二', '三', '四', '五', '六']; for(var k in o){
if(new RegExp('('+k+')').test(format)){
if(k=='y+'){
format = format.replace(RegExp.$1, (o[k]+'').substr(4- RegExp.$1.length));
}else if(k=='w'){
format = format.replace(RegExp.$1,weekends[o[k]]);
}else{
format = format.replace(RegExp.$1, RegExp.$1.length==1? o[k]: ('00'+o[k]).substr((''+o[k]).length))
}
}
}
return format;
}

获取字符的真实长度

一般中文字符都是两个字节的


function getLength(s){
var len = s.length;
var reg = /[\u4e00-\u9fa5]/;
for(var i=0;i<len;i++){
if(reg.test(s.charAt(i))){
len+=2;
}else{
len+=1;
}
} return len;
}

rgb 颜色字符串转换为十六进制

比如把rgb(255,255,255)转成#ffffff。 关键在于,可以用.toString(16)方法把数字转成十六进制


function reg2hex(sRGB){
var reg = /rgb\((\d+),\s*(\d+),\s*(\d+)\)/;
var rs = sRGB.match(reg);
if(!rs){
return sRGB;
}else{
var str = '#';
for(var i=1;i<=3;i++){
var n = parseInt(rs[i]);
if(n<0 || n>255){return sRGB}
str += n>16? n.toString(16): '0'+n.toString(16);
}
return str;
}
}

十进制和二进制的转换


// 十进制转二进制
num.toString(2); // 二进制转十进制
parseInt(num,2);

获取全局变量global(在不同的环境)


// self 是window的保留关键字, 在浏览器中指向window对象 var global = typeof window != 'undefined' && window.Math == Math
? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();

常用,好用的js代码的更多相关文章

  1. 站长常用的200个js代码 站长常用js代码大全 站长常用js代码集合

    站长常用的200个js代码 1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect: ...

  2. 常用近百个js代码汇总

    //檢查空串 function isEmpty(str){ )) return (true); else return(false); } //檢查是否未數字 function isDigit(the ...

  3. 常用js代码整理、收集

    个人整理了一下个人常用到的一些js代码,以方便学习以及日后使用,或许有一些是个人之前从网上摘下来的,但是不记得是具体从哪里来的了,如果你看到有一段代码跟你的文章很相似甚至一样,请不要气愤,请告诉我,我 ...

  4. 可重复使用Tab切换代码和纯js代码

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. js 常用正则表达式表单验证代码

    正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.其作用如下:测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一 ...

  6. js常用正则表达式表单验证代码

    方法一:  var re=/正则表达式/;  re.test($("txtid").val())  方法二:  $("txtid").val.match(/正则 ...

  7. Google Chrome调试js代码,开发者工具之调试工具常用功能

    参考:Google Chrome调试js代码-http://www.open-open.com/lib/view/open1384785324165.html 重点:左下角一个{}括号图标按钮用于把杂 ...

  8. selenium常用操作,查找元素,操作Cookie,获取截图,获取窗口信息,切换,执行js代码

    目录: 1. 常用操作 2. 查找元素 3. 操作Cookie 4. 获取截图 5. 获取窗口信息 6. 切换 7. 执行JS代码 简介 selenium.webdriver.remote.webdr ...

  9. 127个常用的JS代码片段,每段代码花30秒就能看懂(上)

    127个常用的JS代码片段,每段代码花30秒就能看懂(上) JavaScript 是目前最流行的编程语言之一,正如大多数人所说:“如果你想学一门编程语言,请学JavaScript.” FreeCode ...

随机推荐

  1. [Leetcode]316.去除重复字母

    题目 贪心方法 用一个两个数组vector<int>cnt,vector<bool>in_right_place: string res:目前符合条件的字符串,到代码结束的时候 ...

  2. android stdio Error Could not find com.android.tools common 25.2.2

    Error:Could not find com.android.tools:common:25.2.2. Searched in the following locations: file:/D:/ ...

  3. vue中请求本地的json数据

    为什么要请求本地的数据?模拟后台的请求数据,验证页面的逻辑是否存在问题,抛开后台提前开发等. 常用的说来有:jq的方式 约等于 axios的方式,vuex状态管理的方式 个人认为最好用的就是jq的方式 ...

  4. 监督学习——决策树理论与实践(下):回归决策树(CART)

    介绍 决策树分为分类决策树和回归决策树: 上一篇介绍了分类决策树以及Python实现分类决策树: 监督学习——决策树理论与实践(上):分类决策树          决策树是一种依托决策而建立起来的一种 ...

  5. webstorm引用ESLint进行静态代码检查

    安装 ESLint 基于 Node 平台,所以 Nodejs 是必须安装的,然后通过 npm 安装 ESLint 包,至于全局安装还是作为开发依赖安装,取决于个人. 然后在 WebStorm 中,打开 ...

  6. Linux下升级Python到3.5.2版本

    原文出处:https://www.cnblogs.com/tssc/p/7762998.html 本文主要介绍在Linux(CentOS)下将Python的版本升级为3.5.2的方法 众所周知,在20 ...

  7. 全网最详细的PLSQL Developer + Oracle client的客户端 或者 PLSQL Developer + Oracle server服务端的下载与安装过程(图文详解)

    不多说,直接上干货! 环境说明: 本地没有安装Oracle服务端,oracle服务端64位,是远程连接,因此本地配置PLSQL Developer64位. Oracle database使用在本机部署 ...

  8. js便签笔记(6)——jQuery中的ready()事件为何需要那么多代码?

    前言: ready()事件的应用,是大家再熟悉不过的了,学jQuery的第一步,最最常见的代码: jQuery(document).ready(function () { }); jQuery(fun ...

  9. Spring技术内幕_IOC容器载入Bean定义资源文件

    转自:http://blog.csdn.net/chjttony/article/details/6259723 1.当spring的IoC容器将Bean定义的资源文件封装为Spring的Resour ...

  10. ELK之filebeat

    1.概述 filebeat使用go语言开发,轻量级.高效.主要由两个组件构成:prospector和harvesters. Harvesters负责进行单个文件的内容收集,在运行过程中,每一个Harv ...