首页 > Web开发 > 详细

js一些相关小技巧

时间:2017-02-08 14:55:05      阅读:180      评论:0      收藏:0      [点我收藏+]

Math 对象

Math.floor(12.5666) 12 舍弃小数
Math.round(12.5666) 13 经行四舍五入
Math.abs(12.5666) 12 返回绝对值
Math.max(a, b) 返回最大值
Math.min(a, b) 返回最小值

字符串截取

substr(start, length)  *start必填实例 "0.fcx".substr(2)  "fcx"

substring(start, end)

在最大和最小数字中随机生成一个数字

var x = Math.floor(Math.random() * (max - min + 1)) + min; 

生成一个100长度的数组

var numbersArray = [],
max = 100;
for (var i = 1; numbersArray.push(i++) < max;);

生成一个固定长度的随机字母和数字的组合

function generateRandomAlphaNum(len) {
var rdmString = "";
for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
return rdmString.substr(0, len);
}

  

打乱一个数组

var numbers = [5, 458, 120, -215, 228, 400, 122205, -85411];
numbers = numbers.sort(function() {
return Math.random() - 0.5
});

排序一个数组

var numbers = [5, 458, 120, -215, 228, 400, 122205, -85411];
numbers = numbers.sort(function(a, b) {
return a - b
}); 

js去除空格

String.prototype.trim = function() {
var regEx = /\s+/g; // 合并多个空白为一个空白
// var regEx=/(^\s*)|(\s*$)/g; // 清除两边的空格
// var regEx = /^.*\/([^\/\?]*).*$/; // 获取文件全名
// var regEx = /^.*\/[^\/]*(\.[^\.\?]*).*$/; // 获取文件扩展名
return this.replace(regEx, ‘ ‘);
};

讲一个数组增加到另一个数组中, 返回数组长度, 这里讲改变array1的长度为7 array2不变, 区别于concat其实concat可以直接实现两个数组的连接, 但是它的返回值是一个新的数组。 这里是直接改变array1

var array1 = [12, "foo", {
name: "Joe"
}, -2458];
var array2 = ["Doe", 555, 100];
Array.prototype.push.apply(array1, array2);

//检查是否是数字 isFinite 检查是否是非数字 或者无穷大

function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}

  


获得一个数组中最大最小值

var numbers = [1, 2, 34, 5, 3, 4, 6, 7, 8, 5];
var maxnumber = Math.max.apply(Math, numbers);
var minNumber = Math.min.apply(Math, numbers);

  

清空一个数组 设置length = 0

var myArray = [12, 222, 1000];
myArray.length = 0;

  

删除数组中的项 不要用delete 要用splice

因为delete.item[3] 并没有真正的删除, 只是把该项变成undefined而已
item.splice(3, 1) 才是真正的删除 从位置3开始 删除1个长度的内容

  

改变数组的长度可以截取数组( 如果数组改变的长度大于数组本身, 就会用undefined填充长度)

var myArray = [12, 222, 1000];
myArray.length = 2;

  

逻辑判断OR / AND

var foo = 10;
foo == 10 && dosomething();
相当于满足前者 执行后者
foo == 10 || dosomething();
相当于当前面不满足时候才执行后者

  

使用map遍历数组(IE9以下不支持)

var sq = [1, 2, 3, 4].map(function(item) {
return item * item
})

  


四舍五入保留N位小数( 小数点后4位)

var num = 2.443242342;
num = num.toFixed(4);

  

console.log 和console.dir区别

log 输出内容 dir输出对象

  

with方法作用是可以直接使用对象的属性 不用.属性执行 建议不用, 会生成全局变量

with(object) {}

  

JSON序列化 反序列化

JSON.parse() JSON.stringify()

  

数组遍历 定义变量len可以防止每次遍历的时候都重新计算length长度

for (var i = 0, len = arr.length; i < len; i++) {}

  

setTimeOut setInterval 传入的应该都是方法体 不能传入字符串, 因为字符串它会通过eval 自动转成方法体影响效率

setTimeOut(‘doSomethingPeriodically()‘, 1000) setInterval(doSomethingPeriodically, 1000)

switch case 语句在3 - 10 条的时候效率高于if else

  

不要在循环里面写try -catch 因为catch捕获的错误对象会创建一个变量, 每次都重新创建

  

js一些相关小技巧

原文:http://www.cnblogs.com/youtx/p/6377928.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!