【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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章