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);
}