前端js奇淫技巧(二)

一.获取指定范围内的随机数

这个功能在生成测试用的假数据时特别有用

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

二.生成从0到指定值的数字数组

var numbersArray = [];
var max = 100;
for( var i=1; numbersArray.push(i++) < max;); 
console.log(numbersArray); // [1,2,3 ... 100]

三.生成随机的字母数字字符串

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

四.打乱数字数组的顺序

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

五.获取数组中的最大值和最小值

var  numbers = [5,0,120,-215,228,11233205,-75411]; 
var maxInNumbers = Math.max.apply(Math, numbers); //得到数组中的最大值
var minInNumbers = Math.min.apply(Math, numbers); //得到数组中的最小值
console.log(maxInNumbers);
console.log(minInNumbers);

六.保留指定小数位数

var num =2.443242342;
num = num.toFixed(4);
console.log(num); //2.4432

七.浮点计算的问题

console.log(0.1 + 0.2 === 0.3);     // false
console.log(9007199254740992 + 1);  // 9007199254740992
console.log(9007199254740992 + 2);  // 9007199254740994

八.使用length属性清空数组

var myArray = [12 , 222 , 1000 ];  
myArray.length = 0;
console.log(myArray); //[]

九.使用length属性截断数组

var myArray = [12 , 222 , 1000 , 124 , 98 , 10 ];  
myArray.length = 4;
console.log(myArray); //  [12 , 222 , 1000 , 124] 

十.不要直接从数组中delete或remove元素

如果对数组元素直接使用delete,其实并没有删除,只是将元素置为了undefined。数组元素删除应使用splice。

var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852 ,, 'Doe' ,2154 , 119 ];
console.log(items.length);    // 11
console.log(delete items[3]); // true
console.log(items.length);    // 11

items.splice(3,1);
console.log(items.length);    // 10

十一.使用map()函数方法对数据循环

var squares = [1,2,3,4].map(function (val) {
   return val * val;
});
console.log(squares);  // [1,4,9,16]

十二.不要对数组使用for-in

var sum = 0;  
for (var i = 0, len = arrayNumbers.length; i < len; i++) {  
    sum += arrayNumbers[i];  
}

i和len两个变量是在for循环的第一个声明中,二者只会初始化一次,这要比下面这种写法快:
for (var i = 0; i < arrayNumbers.length; i++)

猜你喜欢

转载自blog.csdn.net/diaoweixiao/article/details/80853692