【JavaScript】编程题2019.08.14

编程题:综合等


1.综合

1.1 dom节点查找

  • 查找两个节点的最近的一个共同父节点,可以包括节点自身
function commonParentNode(oNode1, oNode2) {
    for(;;oNode1=oNode1.parentNode){
        if(oNode1.contains(oNode2)){
            return oNode1;
        }
    }
}

1.2 根据包名,在指定空间中创建对象

function namespace(oNamespace, sPackage) {
    var pack = sPackage.split('.');
    for(var i=0;i<pack.length;i++){
        if(!oNamespace[pack[i]]){
            oNamespace[pack[i]] ={}; 
        }
        oNamespace = oNamespace[pack[i]];
    }
}

1.3 斐波那契数列函数

function fibonacci(n) {
    return n>2? fibonacci(n-1)+fibonacci(n-2):1;
}

1.4 获取字符串长度

  • 如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
    否则如果字符 Unicode 编码 > 255 则长度为 2(在原来长度上再加1)
function strLength(s, bUnicode255For1) {
    if(bUnicode255For1 === true){
        return s.length;               
    }
    for(var i=0,m=0,len=s.length; i<len; i++){
        if(s.charCodeAt(i)>255)
            m++;
    }
    return s.length+m; 
}

1.5 判断邮箱格式

function isAvailableEmail(sEmail) {
    var reg=/^([\w+\.])+@\w+([.]\w+)+$/;
    return reg.test(sEmail);
}

1.6 颜色字符串转换

  • 将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff
  1. rgb 中每个 , 后面的空格数量不固定
  2. 十六进制表达式使用六位小写字母
  3. 如果输入不符合 rgb 格式,返回原始输入
function rgb2hex(sRGB) {
   return sRGB.replace(/^rgb\((\d+)\s*\,\s*(\d+)\s*\,\s*(\d+)\)$/g, function(a, r, g, b){
       return '#' + hex(r) + hex(g) + hex(b);
   });
}
function hex(n){
    return n < 16 ? '0' + (+n).toString(16) : (+n).toString(16);
}
  • /g 表示该表达式可以进行全局匹配。
  • 不加入/g,则只返回第一个匹配,无论执行多少次均是如此,如果加入g,则第一次执行也返回第一个匹配,再执行返回第二个匹配,依次类推。

1.7 字符串字符统计

在这里插入图片描述

function count(str) {
    var obj = {};
    str.replace(/\S/g,function(s){
        !obj[s]?obj[s]=1:obj[s]++;
    })
    return obj;
}

1.8 获取url参数

在这里插入图片描述


  • 使用void目的就是为了得到javascript中的undefined,为什么不直接使用undefined呢?主要有2个原因:
    1.使用void 0比使用undefined能够减少3个字节;2.undefined并不是javascript中的保留字,我们可以使用undefined作为变量名字,然后给它赋值.

2.小结

1./g表示全局匹配;
2. .replace()方法第1个参数为匹配的字符格式,第2个参数为将要替换的元素,一般设置匿名函数。

发布了75 篇原创文章 · 获赞 47 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章