JS常用

Array 数组,残疾的抽象List列表

//定义数组
var list = [];//预定长度的用new Array(size);
//数组长度
list.length;
//不支持+-,不过可以拼接合并
list.concat(list)//原数组不变,返回新的总数组
//截取数组,返回截取内容
list.slice(0,-2);
list.slice(1);//第二位不写默认取到最后
list.slice();//复制数组,都不写默认从头到尾
//最强的,修改数组
list.splice(0,1);//删除,并返回删除部分数组
list.splice(1,0,666);//索引1处插入666
//头尾增删操作,可以模拟栈和队列
list.unshift(66);//头增
list.shift();//头删
list.push(66);//尾增
list.pop();//尾删
//翻转
list.reverse()
//拼接元素为字符串
list.join('');

 

String 字符串,基本够用

//定义字符串
var str = '';
//字符串长度
str.length;
//索引字符
str.charAt(0);
//拼接字符串,也可以使用+
str.concat('666');
str+'666';
//类似数组操作
str.slice(0,-2);//截取
str.splice(1,0,'666');//增
str.splice(0,1);//删
//字母大小写转换
str.toUpperCase();
str.toLowerCase();
//字符串查找,找到返回索引值,找不到返回-1
str.indexOf('6');
str.lastIndexOf('6');//返回从后往前第一个
//正则字符串查找
str.search(/6/);//search没有全局模式,没有返回-1,有返回index
//match分为全局g和非全局两种模式
str.match(/6*/);//非全局,若无匹配返回null,若有返回一个匹配结果数组(0为全部匹配字符串,1以后为捕获的匹配子串字符串),还有index属性值
str.match(/6*?/g);//全局匹配,若无返回null,若有返回一个匹配结果数组(每个匹配到字符串),没有index也没有匹配子串捕获,如果要全局检索使用 RegExp.exec()
//字符串分割,返回字符串数组
str.split(',');//支持正则,为空则完全分割,如果正则有子匹配捕获则,捕获的也会被返回到结果中
//竟然没有字符串反转,通过数组的反转实现一下
str.split('').reverse().join('');
//字符串替换,不改变原字符串返回新字符串
str.replace('6','9');//默认只替换一次
str.replace(/6/g,'$0');//除非使用正则全局匹配,第二个参数新的字符串中可以使用$1捕获1,$&最后匹配整串,$+最后匹配子串,$`左,$'右
str.replace(/6/g, f);//第二个参数也可以是一个字符串处理函数(可以有$参数),返回新字符串即可。
function f($0){
    return $0 + '7';
};
str= str.replace(/\s/g,"");//去除空格
str= str.trim();//去除首尾空格

RegExp 正则对象,也挺常用

//定义正则对象
//d数字,s空白,W(大小相反)非数字字母下划线,[^]不是这些,.任意字符
//^$开始结束位置,\b单词开始或结束位置
//|优先级最低(整个两边或),()捕获,非捕获(?:),{n,m}重复n到m次,+?非贪婪,尽可能少匹配
var reg=new RegExp('^\s\W\d[^a-b]6|.+?(7)?', 'ig');
//全局模式时有lastIndex 属性,默认-1,下次检索的起始点,循环又从0开始
//匹配测试,存在匹配到字符串
reg.test('666');//可以多次,循环,有匹配返回true,无false
ref.test('^666$');//完整匹配
//匹配
reg.exec('666')//正则是全局匹配时,多次执行会一直从上次的位置匹配下去,返回的结果包括匹配字符串数组和index
var result;//非全局千万不能这样写!
while ((result = reg.exec('6666')) != null)  {
    console.log(result [0]);
}

函数

//函数的参数数组,可以用来实现假的多态 
function test(a, b) {
    //只传入一个参数时作为b,a用默认值123
    if (arguments.length == 1) {
        b =  arguments[0];
        a = 123;
    }
    //...
}
//自执行函数
(function(){alert(1);}()); //或者!function(){alert(1);}(); 
//假装是模块的自执行函数
var name= name|| {};//命名空间
(function (n) {
    var n.xxx = function (){};//外部通过name.xxx()调用
}(name));

其他

//for in 遍历字符串,对象
//注意数组最好别用for in,可能有坑爹的有其他属性
for(var key in a) {
    console.log(a[k]);
}
//循环删除问题,逆向操作即可
for (var i = a.length - 1; i >= 0; i--) {
    if (a[i]==6) {
        a.splice(i,1);
    }
}
//JSON
JSON.stringify(obj,null,2);
JSON.parse(jsonStr);
//字符串转数值
//用于任何数据类型转换成数值,参数为Object
Number('123px');//NaN,只会转换整个值,不行就NaN
Number('');//0
Number(true);//1
Number(null);//0
Number(undefined);//NaN
Number("3.125e7")//支持解析科学计数法的数
Number('0xA');//支持解析1十六进制的数('0'开头八进制不支持)
//参数为String,只用于解析字符串中无效字符之前的整数,其他返回NaN
parseInt('0123px');//其他,字符串以"0x"解析为十六进制整数,"0" 开头解析为八进制整数
parseInt("10",16)// 也可以直接设置,按十六进制解析
//参数为String,只用于解析字符串中无效字符之前的整数或浮点数(第一个小数点前后),其他返回NaN
parseFloat('1234blue');//1234
parseFloat('0xA');//0//没有十六进制等功能
parseFloat('0908.5');//908.5
parseFloat('3.125e7');//31250000,但是可以解析科学计数法的数,Number()也支持
//数值转换为字符串
''+1.23;
//判断是否为数字
isNaN(xx);
//判断是否为undefined
typeof(exp) == "undefined";
//判断是否为nullexp===null;
//日期
new Date(new Date()-24*60*60*1000);//昨天
//随机数
Math.floor(Math.random ()*10)//0-9
//保留两位小数,可以保留小数点后的0,结果为字符串,原生的toFixed有浮点数bug,在这里只用来补充0用
(Math.round(3.01 * Math.pow(10, 2)) / Math.pow(10, 2)).toFixed(2);
//计算分页数Math.ceil(itemCount, pageSize) == 0 ? 1 : Math.ceil(itemCount, pageSize);
//URI编码函数
//encodeURI()和decodeURI()不会管 ~ ! * ( ) - _ ' . 还有 @ # $ & + = ; : , / ?
//encodeURIComponent()和decodeURIComponent()不会管~!*()-_'.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值