JavaScript奇技淫巧

1. 从数组中随机获取成员

   var items = [12,54,’a’,2,433,’foo’,’Doe’,2312,99];

   var randomItem = items[Math.floor(Math.random()* items.length)];

    首先来讲一下 Math。是具有用于数学常数和函数的属性和方法的内置对象 不是函数对象。

     不是一个构造函数 所有属性和方法Math都是静态的。

    Math.random(); 返回0到1之间的浮点数 不包括1

    Math.floor(); 返回小于或等于给定数量的最大整数

    Math.floor(4.7);  //4    Math.floor(4.2);  //4

    Math.floor(-4.2);  //-5    Math.floor(-4.8);   //-5

2. 生成从0到指定值得数字数组

  var numberArray = [];

  var max = 100;

  for(var i = 1; numberArray.push(i++) < max;);

  //这里是利用数组的方法push 把数字一个一个循环放入数组里面。但是这里还有一种方法更高效

  for(var i = 1; i < max; i++){

    numberArray[numberArray.length] = i;

  }

3. 打乱数字数组的顺序

  var  numbers = [5,457,120,-215,228,200,-88827];

      numbers = numbers.sort(function(){

      return Math.random() - 0.5;

    });

4. 数组之间追加

  

5. 对象转换为数组

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

  典型的就是一个 函数参数 是一个伪数组。object类型。

6. 验证是否是数字

  function isNumber(n){

    return !isNaN(parseFloat(n)) && isFinite(n);

  }

7. 验证是不是一个数组

  function isArray(obj){

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

  }

  A)如果toString() 方法被重写过的话 就不行了。

  Array.isArray(obj);  //its a new Array method

  如果在浏览器中没有使用frame,还可以用instanceof,但如果上下文太复杂,也有可能出错。

  

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

  

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

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

  

  使用splice splice() splice()方法改变阵列的通过去除现有元件和/或添加新的元素的含量。

  array.splice(start,deleteCount[, item1,[item2...])

  

  也可以这么用

  items.splice(3,0,"ss");

  在数组索引为3的位置上 删除0 个元素 在添加一个"ss"。 意思就是第四个元素2。

  顺便详细说一下splice()函数。当你调用splice() 函数之后 返回来的是 执行之后的数组。 而原函数会被改变

  例如[1,2,3,4,5].splice(2,2); 就会返回[3,4]。 原来的就是[1,2,5]。

10.   条件中使用逻辑与或

  var  foo = 10;

  foo == 10 && doSomething();

  foo == 5 || doSomething();  

  function doSomething(arg1){

    arg1 = arg1 || 10;  // arg1 will have 10 as a default value if it's not already set

  }

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

  

12. 用JSON来序列化和反序列化

  

13. 使用switch/case 代替一大叠的if/else

  当判断分支超过两个 使用switch会比较快。

  switch/case 使用数字区间

  

14. 处理WebSocket的超时

  通常情况下WebSocket连接创建后,如果30秒内没有任何活动服务器端会对连接进行超时处理 防火墙也可以对单位周期没有活动的连接进行超时处理

  为了防止这种情况的发生 可以每隔一段时间 往服务器发送一条空的消息。 一个用于使连接保持活动状态 一个专门用于结束状态

  

posted on 2016-09-20 23:46  Befacebook  阅读(111)  评论(0)    收藏  举报