js經常使用代碼

獲取URL ?後的查詢參數算法

function query(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = decodeURI(window.location.search).substr(1).match(reg);
    if(r != null) return unescape(r[2]);
};

數組去重json

function unique(arr){
  var res =[];
  var json = {};
  for(var i=0;i<arr.length;i++){
    if(!json[arr[i]]){
      res.push(arr[i]);
      json[arr[i]] = 1;
    }
  }
  return res;
}

數字輸入框數組

function clearNoNum(obj) {
    obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能輸入兩個小數  
    if(obj.value.indexOf(".") < 0 && obj.value != "") { //以上已通過濾,此處控制的是若是沒有小數點,首位不能爲相似於 0一、02的金額 
        obj.value = parseFloat(obj.value);
    }
    if(obj.value == 'NaN') {
        obj.value = 1;
    }
}

冒泡排序app

function bubbleSort(arr) {
    var len = arr.length;
    for (var i = 0; i < len; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {        //相鄰元素兩兩對比
                var temp = arr[j+1];        //元素交換
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

選擇排序
在時間複雜度上表現最穩定的排序算法之一,由於不管什麼數據進去都是O(n²)的時間複雜度。。。因此用到它的時候,數據規模越小越好。惟一的好處可能就是不佔用額外的內存空間了吧。
ide

function selectionSort(arr) {
    var len = arr.length;
    var minIndex, temp;
    for (var i = 0; i < len - 1; i++) {
        minIndex = i;
        for (var j = i + 1; j < len; j++) {
            if (arr[j] < arr[minIndex]) {     //尋找最小的數
                minIndex = j;                 //將最小數的索引保存
            }
        }
        temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
    return arr;
}

插入排序
插入排序的代碼實現雖然沒有冒泡排序和選擇排序那麼簡單粗暴,但它的原理應該是最容易理解的了,由於只要打過撲克牌的人都應該可以秒懂。固然,若是你說你打撲克牌摸牌的時候歷來不按牌的大小整理牌,那估計這輩子你對插入排序的算法都不會產生任何興趣了。。。
插入排序和冒泡排序同樣,也有一種優化算法,叫作拆半插入。對於這種算法,得了懶癌的我就套用教科書上的一句經典的話吧:感興趣的同窗能夠在課後自行研究。。。
優化

function insertionSort(arr) {
    var len = arr.length;
    var preIndex, current;
    for (var i = 1; i < len; i++) {
        preIndex = i - 1;
        current = arr[i];
        while(preIndex >= 0 && arr[preIndex] > current) {
            arr[preIndex+1] = arr[preIndex];
            preIndex--;
        }
        arr[preIndex+1] = current;
    }
    return arr;
}

js深拷貝方式一: 遞歸拷貝this

var clone = function(obj) {
  var newObj = obj.constructor === Array ? [] : {};
  for( var key in obj) {
    newObj[key] = typeof obj[key] === 'Object' ? clone(obj[key]) : obj[key];
  }

  return newObj;
}

js深拷貝方式2,利用json對象轉化爲字符串的方法spa

var clone2 = function(v) {
  return (
    JSON.parse(JSON.stringify(v))
  );
}

毫秒轉換爲年月日時分秒prototype

function timestampToTime(timestamp) {
    var date = new Date(timestamp * 1000); //時間戳爲10位需*1000,時間戳爲13位的話不需乘1000
    Y = date.getFullYear() + '-';
    M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    D = change(date.getDate()) + ' ';
    h = change(date.getHours()) + ':';
    m = change(date.getMinutes()) + ':';
    s = change(date.getSeconds());
    return Y + M + D + h + m + s;
}
function change(t) {
    if (t < 10) {
        return "0" + t;
    } else {
        return t;
    }
}

js模糊查詢(表格td)插件

$("#filterName").keyup(function() {
    $("table tbody tr").hide();
    $(".inv_neirong").filter(":contains('" + ($(this).val()) + "')").parent().show();
})

視頻插件

<object width='541' height='450'>
    <param name='allowFullScreen' value='true'>
    <param name='movie' value='http://img1.c0.letv.com/ptv/player/swfPlayer.swf?autoPlay=0&id=31121775'/>
    <embed src='http://img1.c0.letv.com/ptv/player/swfPlayer.swf?autoPlay=0&id=31121775' width='541' height='450' allowFullScreen='true' type='application/x-shockwave-flash'/>
</object>

獲取日期之間的日期數組

Date.prototype.format = function() {
    var s = '';
    var mouth = (this.getMonth() + 1) >= 10 ? (this.getMonth() + 1) : ('0' + (this.getMonth() + 1));
    var day = this.getDate() >= 10 ? this.getDate() : ('0' + this.getDate());
    s += this.getFullYear() + '-'; // 獲取年份。  
    s += mouth + "-"; // 獲取月份。  
    s += day; // 獲取日。  
    return(s); // 返回日期。  
};

function getAll(begin, end) {
    var dateArr=[];
    var ab = begin.split("-");
    var ae = end.split("-");
    var db = new Date();
    db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
    var de = new Date();
    de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
    var unixDb = db.getTime();
    var unixDe = de.getTime();
    for(var k = unixDb; k <= unixDe;) {
        dateArr.push((new Date(parseInt(k))).format());
        k = k + 24 * 60 * 60 * 1000;
    }
    console.log(dateArr);
}
相關文章
相關標籤/搜索