超实用的JavaScript技巧及最佳实践给

时间:2022-10-21 09:23:19

1、数组创建一个随机项

var items = [12,548,'a',2,5478,'foo',8852,,'Doe',2145,119];
var randomItem = items[Math.floor(Math.random()*items.length)];

2、在特定范围里获得一个随机数

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

3、在数字0和最大数之间生成一组随机数

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

4、生成一组随机的字母数字字符

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

5、打乱数字数组

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

6、字符串trim函数

String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g,"");
};

7、数组追加

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

8、将参数对象转换为数组

var argArray = Array.prototype.slice.call(arguments);

9、验证一个给定参数是否为数字

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

10、验证一个给定的参数为数组

function isArray(obj){
return Object.prototype.toString.call(obj) ==='[object Array]';
};

注意:如果toString()方法被重写了,你将不会得到预期结果。

或者你可以这样写:

var myFrame = document.createElement('iframe');
document.body.appendChile(myFrame);
var myArray = window.frames[window.frames.length-1].Array;
var arr = new myArray(a,b,10);
arr instanceof Array;

11、从数字数组中获得最大值和最小值

var numbers = [5,458,120,-215,228,400,122205,-85411];
var maxInNumbers = Math.max.apply(Math,numbers);
var minInNumbers = Math.min.apply(Math,numbers);

12、清空数组

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

13、不要用delete从数组中删除项目

开发者可以使用split来代替使用delete来删除数组项。与其删除数组中未定义项目,还不如使用delete来替代。

var items = [12,548,'a',2,5478,'foo',8852, ,'Doe',2154,119];
item.length;//return 11
delete items[3];
items.length;//return 11
/*[12,548,'a',undefined,5478,'foo',8852, ,'Doe',2154,119]*/

也可以……

var items = [12,548,'a',2,5478,'foo',8852, ,'Doe',2154,119];
item.length;//return 11
items.splice(3,1);
items.length;//return 10
/*[12,548,'a',5478,'foo',8852, ,'Doe',2154,119]*/

delete方法应该删除一个对象属性

14、使用length属性缩短数组

如上文提到的清空数组,开发者还可以使用length属性缩短数组。

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

如果你所定义的数组长度值过高,那么数组的长度将会改变,并且会填充一些未定义的值到数组里,数组的length属性不是只读的。

myArray.length = 10;
myArray[myArray.length - 1];//undefined