JS常用

来源:互联网 发布:实景地图制作软件 编辑:程序博客网 时间:2024/06/06 00:35

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();//字符串查找,找到返回索引值,找不到返回-1str.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.splite(',');//支持正则,为空则完全分割,如果正则有子匹配捕获则,捕获的也会被返回到结果中//竟然没有字符串反转,通过数组的反转实现一下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,"");//去除空格
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,无falseref.test('^666$');//完整匹配//匹配reg.exec('666')//正则是全局匹配时,多次执行会一直从上次的位置匹配下去,返回的结果包括匹配字符串数组和indexvar 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);    }}//字符串转数值//用于任何数据类型转换成数值,参数为ObjectNumber('123px');//NaN,只会转换整个值,不行就NaNNumber('');//0Number(true);//1Number(null);//0Number(undefined);//NaNNumber("3.125e7")//支持解析科学计数法的数Number('0xA');//支持解析1十六进制的数('0'开头八进制不支持)//参数为String,只用于解析字符串中无效字符之前的整数,其他返回NaNparseInt('0123px');//其他,字符串以"0x"解析为十六进制整数,"0" 开头解析为八进制整数parseInt("10",16)// 也可以直接设置,按十六进制解析//参数为String,只用于解析字符串中无效字符之前的整数或浮点数(第一个小数点前后),其他返回NaNparseFloat('1234blue');//1234parseFloat('0xA');//0//没有十六进制等功能parseFloat('0908.5');//908.5parseFloat('3.125e7');//31250000,但是可以解析科学计数法的数,Number()也支持//数值转换为字符串''+1.23;//判断是否为数字isNaN(xx);//判断是否为undefinedtypeof(exp) == "undefined";//判断是否为nullexp===null;//日期new Date(new Date()-24*60*60*1000);//昨天//保留两位小数,可以保留小数点后的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()不会管~!*()-_'.
0 0