博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript一些小技巧
阅读量:6280 次
发布时间:2019-06-22

本文共 3169 字,大约阅读时间需要 10 分钟。

转载-----------------http://www.cnblogs.com/chenguangyin/archive/2012/12/10/2812122.html

  • 字符串转换为数值

常规方法:

var var1 = parseInt("2");var var2 = parseFloat("2");var var3 = Number("2"); var var3 = new Number("2");

简便方法:

var var1 = +("2");

另一简便方法:

var str = "1.0";var num = str - 0;

 

  • 将其他类型转换为boolean类型

在JavaScript中,所有值都能隐式的转化为Boolean类型:

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0、NaN
Object 任何对象 null
Undefined (不适用) undefined

举例:

0 == false; // true1 == true; // true'' == false // truenull == false // true

我们也可以显示转化为Boolean类型:

var a = Boolean("Hello"); //true

更简单的方法:

var a = "Hello";var b = !!a;

 

  • 创建多维数组

一般方法:

var arr = new Array(2);arr[0] = new Array(2);arr[1] = new Array(2);arr[0][0] = 1;arr[0][1] = 2;arr[1][0] = 3;arr[1][1] = 4;

简便方法:

var arr = {};arr[[0, 0]] = 1;arr[[0, 1]] = 2;arr[[1, 0]] = 3;arr[[1, 1]] = 4;

其他方法1(推荐):

var arr = [];arr[0] = [1, 2];arr[1] = [3, 4];

 其他方法2(楼下补充,推荐):

var arr=[        [1, 2],        [3, 4]];

 

 

  • 阻止别人在iframe中加载你的页面

防止把你的网页通过iframe嵌入它自己的网页:

if(top !== window) {   top.location.href = window.location.href;}

这段代码应该放在每个页面的head中。

 

  • 将arguments参数对象转换为数组

在JavaScript中,函数中的预定义变量arguments并非一个真正的数组,而是一个类似数组的对象。 它具有length属性,但是没有数组对象的slice, push, sort等函数,而这些有时我们经常在函数里用到,所以我们需要把参数转换为真正的数组:

function func() {    var arr = Array.prototype.slice.call(arguments, 0);    return arr;}

 

  • 遍历得到的正则结果

常规方法:

var str = "132ada5d6g3j";var match = str.match(/\d/g, str);var arr = [];var j;for(var i = 0, j = match.length; i < j; i++) {    arr.push(match[i]);}console.log(arr);

快捷方法:

var str = "132ada5d6g3j"; var arr = []; str.replace(/\d/g, function() {
arr.push(arguments[0]); }); console.log(arr);

另一快捷方法:

var str = "132ada5d6g3j"; var arr = str.replace(/\D/g,' ').split(' '); console.log(arr);

 

  • 获取数字数组中的最大值

常规方法:

var arr = [1, 5, 4, 12355, 43, 123, 123, 3, 4454, 43];var max = arr[0];for(var i in arr) {    if(arr[i] > max) {        max = arr[i];    }}/* 循环也可能是:for(var i = 0 ,j = arr.length; i < j; i++) {    if(arr[i] > max) {        max = arr[i];    }}*/console.log(max);

简便方法:

var arr = [1, 5, 4, 12355, 43, 123, 123, 3, 4454, 43];var max = Math.max.apply(null, arr);console.log(max);

 

  • 数字取整

常规方法:

var num = 5.63;console.log(Math.floor(num));

其他方法1(只可用于不小于0的数):

var num = 5.63;console.log(num>>>0);

其他方法2(正负数都可用,推荐):

var num = 5.63;console.log(~~num);

 

  • 修正类似于0.1+0.2 != 0.3的错误

在JavaScript中,数字是基于IEEE754的数值,所以会出现浮点运算误差的情况,这是使用IEEE754的通病,不是语言本身的问题:

var num = 0.1 + 0.2; // 0.30000000000000004console.log(num == 0.3); // false

修正方法:

var num = 0.1 + 0.2; // 0.30000000000000004console.log(num);/*你可以通过toFixed方法指定四舍五入的小数位数:*/console.log(num.toFixed()); // "0"console.log(num.toFixed(1)); // "0.3"

 

  • 整数前补0

普通方法:

/*注意,这里的n表示数字num补0后的位数*/function addZero(num, n) {  var len = num.toString().length;  while(len < n){    num = "0" + num;    len++;  }  return num;}console.log(addZero(5,8)); //00000005

简单方法:

function addZero(num, n) {   y='00000000000000000000000000000'+num; /*这里0的数目可调整*/   return y.substr(y.length-n);}console.log(addZero(5,8)); //00000005

-------------------------------------------------------------------

字符串连接的性能问题应该很经典了,就不详细介绍了。

转载于:https://www.cnblogs.com/akingyao/archive/2013/01/04/2844392.html

你可能感兴趣的文章
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>
Nginx配置文件详细说明
查看>>
怎么用Navicat Premium图标编辑器创建表
查看>>
Spring配置文件(2)配置方式
查看>>
MariaDB/Mysql 批量插入 批量更新
查看>>
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>