本页可编辑, 希望大家 按格式添加或修改 奥. 啦啦啦
js 深拷贝方式一: 递归拷贝
- 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 对象转化为字符串的方法
- var clone2 = function(v) {
- return (
- JSON.parse(JSON.stringify(v))
- );
- }
毫秒转换为年月日时分秒
- 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 模糊查询
- $("#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);
- }
获取 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]);
- };
数组去重
- 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 trim(str) {
- return str.replace(/(^\s*)|(\s*$)/g, "");
- }
数字输入框
- function clearNoNum(obj) {
- obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 只能输入两个小数
- if(obj.value.indexOf(".") <0 && obj.value != "") { // 以上已经过滤, 此处控制的是如果没有小数点, 首位不能为类似于 01,02 的金额
- obj.value = parseFloat(obj.value);
- }
- if(obj.value == 'NaN') {
- obj.value = 1;
- }
- }
冒泡排序
- 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²) 的时间复杂度... 所以用到它的时候, 数据规模越小越好. 唯一的好处可能就是不占用额外的内存空间了吧.
- 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;
- }