欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

那些精彩的JavaScript代码片段

程序员文章站 2022-06-13 14:55:34
精彩的javascript代码片段,分享给大家 1.根据给定的条件在原有的数组上,得到所需要的新数组 var a = [-1, -1, 1, 2, -2, -2...

精彩的javascript代码片段,分享给大家

1.根据给定的条件在原有的数组上,得到所需要的新数组

var a = [-1, -1, 1, 2, -2, -2, -3, -3, 3, -3];
function f(s, e) {
  var ret = [];
  for (var i in s) { // 根据原有的数组长度进行循环
    ret.push(e(s[i]));
  }
  return ret;
}
f(a, function(n) {
  return n > 0 ? n : 0
}); // 传输一个匿名函数作为逻辑判断

2.比原生type或typeof更详细的类型监测方法

function type(p) {
  /function.(\w*)\(\)/.test(p.constructor); //通过其构造函数来获取对应的类型。
  return regexp.$1;
}

3.对象或数组的深拷贝,用于解决对象引用时值一改全改的问题。

var copyobject = function(obj) {
  var result = {};
  for (var x in obj) {
    result[x] = typeof obj === "object" ? copyobject(obj[x]) : obj[x]
    //如果拷贝的值仍然是一个对象,那么重复执行当前方法。
  }  
  return result;
}

4.通过正则表达式来获取cookie的值

function getcookie(name) {
  if (name && regexp("(^| )" + name + "=([^;]*)(;|$)").exec(document.cookie)) return regexp.$2;
  // (^| ) 不匹配第一个空格。
  // ([^;]*) 只匹配除了;号之外的所有字符。
  // (;|$) 匹配以;号或$为结尾的字符。
}

5.通过移位运算来替代”parseint”

~~3.14 = > 3;

// ~~ 取整。~取当前数值的反码,~~表示再次取反,也就是得到当前自身(说明,js中的“位”运算会将数值自动转换为整数)

6.将数值转换为16进制的字符串(常用于表示色彩)

(~~ (math.random() * (1 << 24))).tostring(16)

// ~~ 通过位运算来取整。
// << 左移位。将1的二进制数左移24位。而1<<24 == 2^24(rgb模式下最多可表示的色彩数量)
// tostring(16) 将数值转换为16进制的字符串输出。

7.对象方法的兼容性检查

if ('queryselector' in document) {}

8.nodelist || htmlcollection || object转换为array或具有array的方法

nodelist: 是指通过集合方法获得到的dom节点列表,例如:document.getelementsbytagnmae,document.forms…等方法。
htmlcollection: html块,它与nodelist很像,但是nodelist只支持数字索引,而htmlcollection可以支持名称作为索引。
nodelist与htmlcollection都具有以下类似: 具有数组的外观,但没有数组的方法 、具有length属性、支持索引来读取内容

function makearray(obj) {
  var rs = [],
    len = obj.length;
  try {
    rs = [].slice.call(obj, 0);
  } catch (e) { //for ie
    for (var i = 0; j = obj[i++];) {
      rs.push(j);
    }
  }
  return rs;
}

9. 正则匹配清除两侧空格

var trim = function(v){
  var patrn = /^\s*(.*?)\s+$/;
  return (patrn.test(v))? regexp.$1 : '
  null ';
}

10. 时间格式化

function dateformat(t){    // t 是以秒为单位的值。
  var h = ~~(t/3600),    // t除以3600,取整,得到的就是小时。
    m = ~~(t%3600/60),  // t求余3600,取模,得到的就是去除小时剩下的秒数(分钟 + 秒),再除以60,取整,得到的就是分钟。
    s = ~~(t%3600%60);  // t求余3600,再求余60,剩下的自然就是“秒数”。
 
   return h+'小时'+m+'分'+s+'秒';
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。