common方法

  • 金額格式化:123456 =》 123,456
     
function formatNumber(str) {
    // str 的最大長度爲16位,
    //["0", "9", "8", "7", "6", "5", "4", "3", "2", "1"]
    // str的類型可能有:number,string ,null,undefined,
    if (typeof str === 'string' || typeof str === 'number') {// 123,"123","","0","0.00",0,0.00

        // 數字沒有split方法,string轉化;
        var decimals = String(str).split('.')[1];//小數
        decimals = decimals ? '.' + decimals : '';
        str = String(str).split('.')[0];//整數
        var temStr = str.split("");
        //去空格,
        var tem = [];
        for (var i = 0; i < temStr.length; i++) {
            temStr[i] === " " ? null : tem.push(str[i]);
        }
        if (temStr.length) {
            // 方法一
            return temStr.reverse().reduce((prev, next, index) => {
                    return ((index % 3) ? next : (next + ',')) + prev
                }) + decimals
            // 方法二
            //正則匹配邊界\B,邊界後面必須跟着(\d{3})+(?!\d);
            return str.replace(/\B(?=(\d{3})+(?!\d))/g, ',')+decimals
           // 方法三
           return str.replace(/(\d)(?=(\d{3})+$)/g, "$1,");


        } else {// "",未判斷值爲 " "的狀況
            return ''
        }
    } else {//null,undefined
        return ''
    }
}


//方法四:toLocaleString

(123456789).toLocaleString('en-US')//1,234,567,890

 

日期格式化javascript

// 對Date的擴展,將 Date 轉化爲指定格式的String
// 月(M)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 能夠用 1-2 個佔位符,
// 年(y)能夠用 1-4 個佔位符,毫秒(S)只能用 1 個佔位符(是 1-3 位的數字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) {
    // fmt = YYYY-MM-DD HH:mm:ss 逐一替換正則中的字符
    var o = {
        "Y+":this.getFullYear(),//年份
        "M+": this.getMonth() + 1, //月份
        "D+": this.getDate(), //日
        "H+": this.getHours(), //小時
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "Q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(Y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    return fmt;
}
  • 數組去重(注:暫不考慮對象字面量,函數等引用類型的去重,也不考慮NaN,undefined,null等特殊類型狀況)
//方法一:

//兩層循環,O(n^2)

//方法二:

function unique(arr) {
    return arr.filter(function (ele, index, array) {
        return array.indexOf(ele) === index
        //很巧妙,這樣篩選一對一的,過濾掉重複的
    })
}
//缺點:不支持IE9如下的瀏覽器,時間複雜度仍是O(n^2)

//方法三:

function unique(arr) {
    var obj = {}
    return arr.filter(function (item, index, array) {
        return obj.hasOwnProperty(typeof item + item) ?
            false : (obj[typeof item + item] = true)
    })
}

//優勢:hasOwnProperty是對象的屬性(名稱)存在性檢查方法。對象的屬性能夠基於Hash表實現,所以對屬性進行訪問的時間複雜度能夠達到O(1);

//filter是數組迭代的方法,內部仍是一個for循環,因此時間複雜度是O(n)。

//缺點:不兼容IE9如下瀏覽器,其實也好解決,把filter方法用for循環代替或者本身模擬一個 filter 方法。

//方法四:

//ES6 提供了新的數據結構 Set。它相似於數組,可是成員的值都是惟一的,沒有重複的值。

const unique=a=>[...new Set(a)]

//優勢:ES6語法,簡潔高效,咱們能夠看到,去重方法從原始的14行代碼到ES6的1行代碼,其實也說明了JavaScript這門語言在不停的進步,相信之後的開發也會愈來愈高效。

//缺點:兼容性問題,現代瀏覽器才支持,有babel這些都不是問題。

 

canvas 畫圓java

function docanves() {
    var dashBoard = document.getElementById('dashBoard');
    var ctx = dashBoard.getContext('2d');
    ctx.beginPath();
    ctx.strokeStyle = 'rgba(255,236,202,0.7)';
    //以canvas中的座標點(100,100)爲圓心,繪製一個半徑爲50px的圓形
    var startArc = Math.PI * 5 / 6,
        endArc = startArc + Math.PI * 4 / 3,
        fontSize = window.fontSize;// rem
    ctx.strokeStyle = '#fff';//線 的顏色
    ctx.lineWidth = 0.05 * fontSize;// 線的寬度
    ctx.setLineDash([5, 5]);// 點狀樣式
    ctx.arc(150, 50, 50, startArc, endArc, false); //false 順時針
    ctx.fillStyle = "white";// 填充顏色
    ctx.fill();
    ctx.stroke();
    ctx.closePath();
}

 

獲取地址欄參數:canvas

  1. search
    //方法一
    function getQueryString(name,hash) {// search hash
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
        var s = hash == 'hash' ? window.location.hash : window.location.search;
        s = s ? s.substr(1) : '';
        var r = s.match(reg);
        if (r != null) {
            return unescape(r[2]);
        }
        return null;
    }
    
    //方法二
    function GetRequest(hash) {// search hash
        //獲取url中"?"符後的字串
        var url = hash == 'hash' ? window.location.hash : window.location.search;
        var theRequest = new Object();
        var str = url && url.substr(1);
        if ((url.indexOf("?") != -1) && str) {
            str = str.split("&");
            for (var i = 0; i < str.length; i++) {
                theRequest[str[i].split("=")[0]] = unescape(str[i].split("=")[1]);
            }
        }
        return theRequest;
    }
相關文章
相關標籤/搜索