JavaScript小技巧
来源:互联网 发布:有没学英语的软件 编辑:程序博客网 时间:2024/06/01 18:20
1、在String.prototype.replace方法中使用 /g 和 /i 标识符
字符串replace
不会替换所有匹配的子串——而是仅仅替换第一个匹配的内容,所以如果需要匹配全部,需要添加全局标识符 /g
如: str.replace(/cat/g,'test');
如果需要匹配大小写敏感的内容,则需要进行 用 /i标
识符 str.replace(/cat/i,'test');
2、类数组转换
在JavaScript中会出现类数组情况,也就是有数组的特征,但是无法像数组一样直接操作类数组,典型的就是arguments数组。
如果需要,可以对类数组进行转化 Array.prototype.slice.call(arguments)
3、克隆数组 var clone = myArray.slice(0);
当然 参数0,也是可以省略的。估计是undefined是被转化为0了吧。
4、对象排序
面对一个对象里面的数字,你怎么排序呢是不是很麻烦。但是大神们已经挖掘出 sort 的强大之处,
[ {name:'a',age:12}, {name:'b',age:8}, {name:'c',age:20}].sort(function(obj1,obj2){ return obj1.age-obj2.age;// 增序,降序obj2.age-obj1.age})
5、清空数组
myArray.length = 0;
6、合并数组
var array2 = ['x','y'];Array.prototype.push.apply(array1,array2);array1 ;// [3,4,5,'x','y']
7、功能检查和属性检查
如果你以前这样写
if(innerHTML.document){ // do something}//这可以很好的工作,但是效率并不高,更快更好的方式是if('geolocation' in navigator){ // do something}
8、类型转换
注意这个属于技巧性的内容,如果不是很熟悉JavaScript,不推荐使用。
var str = ‘3.1425’;
// ~~ 取整 ,不进行四舍五入 类似Math.round
~~str; // 3
~~’4.99’; // 4
// 1* 浮点数
1 * ‘3.4232323’ ; // 3.4232323
// !! 布尔值 boolean
!!’3.2323’;// true
!!’0’;// true
!!”;//false
9、小数点保留
这个不算是技巧,主要是记不住
(3.234).toFixed(2);// 3.23
10、遍历数组
[3,4,5,6].map(function(el,index){
console.log(el+’\t’+index);// 3 0,4 1 ,…
});
Javasript 遍历数组的几种方式,forEach,map,还有for循环,那么这几种性能如何呢,我写了下面几种测试:
var arr = [];for(var i=0;i<10000000;i++){ arr[i] = i;}function test1(arr){ var s = (new Date())*1; for(var len=arr.length-1;len>=0;len--){ } var e = (new Date())*1; return e-s;}function test2(arr){ var s = (new Date())*1; arr.map(function(el,index){ }); var e = (new Date())*1; return e-s;}function test3(arr){ var s = (new Date())*1; arr.forEach(function(el,i){ }) var e = (new Date())*1; return e-s;}console.log("test1="+test1(arr));console.log("test2="+test2(arr));console.log("test3="+test3(arr));//测试结果为 arr[10000000]test1=5;test2=317;test3=293;//所以如果数据量比较大,为了性能考虑,还是推荐使用for循环进行遍历//测试结果为 arr[1000]test1=0;test2=0;test3=0;
11、截断数组
截断数组跟截取数组不一样,截断会改变原始数组,并且只会从后面截前面;截取数组不会改变原数组,会返回截取的数组
截断数组: var arr = [3,4,5,6,7];
// 截断后面2个 arr.length = 3;// arr = [3,4,5]
截取数组: rr.slice(0,3);// 返回 [3,4,5] arr = [3,4,5,6,7];
12、删除数组的某一项
不要使用 delete来删除数组中的项,因为JS只是会用undefined来替换删除的项,并不是真正删除项。
而是使用是splice进行删除
var arr = [2,3,4,5,6];arr.splice(2,1); // [4] arr: [2,3,5,6]
13、给定范围的随机数 Math.float(Math.random()*(max-min+1))+min;
14、随机数字和字母的字符串 Math.random().toString(16).substr(2);// 16进制,截取从第二位开始的串
15、获取数字数组的最大、最小值
这里使用了Function.protitype.apply方法传递参数的技巧
var num = [3,5,1,2,7,9,8];var max = Math.max.apply(Math,num);var min = Math.min.apply(Math,num);
16、时间Date 格式转成数字 (new Date())*1;// 21440404468679
- 【JavaScript】JavaScript小技巧
- javascript小技巧
- javascript小技巧
- javascript小技巧
- javascript小技巧
- javascript小技巧
- javascript小技巧
- javascript小技巧
- javascript小技巧
- javascript小技巧
- javascript小技巧 (转)
- javascript一些小技巧
- javascript小技巧
- JavaScript小技巧
- javascript小技巧
- javascript 小技巧
- javascript小技巧
- javascript小技巧
- 最小生成树-Prim算法和Kruskal算法
- 排序总结
- JDK的安装和配置流程
- C++ 入门教程(四)注释
- /var/log目录下的20个Linux日志文件功能详解
- JavaScript小技巧
- [LeedCode OJ]#258 Add Digits
- git入门之安装与下载项目
- Caliburn.Micro 解析
- MySQL简单MHA环境搭建
- 不用栈检查小括号、中括号、大括号的匹配
- Rabbit Party
- 父类和子类iframe互相取值和赋值
- Codeforces 313B : Ilya and Queries