javascript 实用工具函数
整理日常开发中我们常常会使用到的一些工具函数。
var utils = (function(){
var fay = {};
// 返回当前时间的毫秒数
fay.getTime = Date.now()
|| function getTime() {return new Date().getTime();};
// 对象复制
fay.extend = function(target, obj) {
if(obj && typeof obj !== 'object') return throw new Error(obj + 'is not object');
for(var i in obj) {
if(obj.hasOwnProperty(i)) {
target[i] = obj[i];
}
}
};
/*
* 获取 url 的参数
*/
fay.getUrlParams = function (url) {
var url = url || location.search,
params = {},
route = '';
if(url) {
route = url.split("?")[1].split("&");
route.forEach(function (item) {
var item = item.split("=");
if(item) {
params[item[0]] = item[1].replace(/(.*)([.|\#]$)/,"$1");
}
})
}else {
console.log('未找到参数!')
}
return params;
};
// 设置cookies
fay.setCookie = function (name, value, time) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + time);
document.cookie = name + "=" + encodeURIComponent(value)
+ ((time == null) ? "" : ";expires=" + exdate.toUTCString())+";path=/";
};
// 读取cookies
fay.getCookie = function (c_name) {
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
{
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return decodeURIComponent(document.cookie.substring(c_start,c_end))
}
}
return ""
};
// 删除cookies
fay.delCookie = function (name) {
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cookieval = this.getCookie(name);
if(cookieval)
document.cookie = name +"="+ cookieval +";expires=" + exp.toUTCString();
};
/**
* mergeArr 合并含有相同value对象元素的数组
* @param {Array} arr 数组
* @param {String} key 字段
* @return {Object}
*
* @example
* var arr = [{m:1,n:22}, {m:1,x:54}, {m:5,e:29},{m:5,k:9}]
* this.mergeArr(arr, 'm')
* {
* 1:[{m:1,n:22},{m:1,x:54}],
* 5:[{m:5,e:29},{m:5,k:9}]
* }
*/
fay.mergeArr = function (arr, key) {
var obj = {};
arr.forEach(function (item, index, arr) {
var m = item[key];
if(!obj[m]) {
obj[m] = [item];
}else {
[].push.call(obj[m],item);
}
});
return obj;
};
/**
* mergeArr 合并含有相同value对象元素的数组
* @param {Array} arr 数组
* @return {Object}
*
* @example
* var arr = [{1:2,8:0,3:5},{1:0,8:8,3:51}]
* this.mergeArr(arr)
* {
* {1:[2,0],3:[5,51],8:[0,8]}
* }
*/
fay.mergeArrByKey = function(arr) {
var obj = {},
result = [],
key;
arr.forEach(function (item, index, arr) {
for(key in item) {
if(!obj[key]){
obj[key] = [];
obj[key].push(item[key])
}else{
obj[key].push(item[key])
}
}
});
for(var i in obj) {
result.push(obj[i])
}
return result;
};
/**
* by 对象数组排序
*
*/
fay.sortBy = function (name) {
return function (o, p) {
var a, b;
if (typeof o === "object" && typeof p === "object" && o && p) {
a = o[name];
b = p[name];
if (a === b) {
return 0;
}
if (typeof a === typeof b) {
return a < b ? -1 : 1;
}
return typeof a < typeof b ? -1 : 1;
}
else {
throw ("error");
}
}
};
/**
* 将时间戳转化为标准时间格式
*
* */
fay.switchTimestamp = function (timestamp, newStandard) {
// 设置需要的时间格式
var newStandard = newStandard || '$2月$3日';
var newDate = new Date();
var standardTime = "",
fullYear='',month = '', day='',
arr = [];
function getArr(newDate) {
fullYear = newDate.getFullYear();
month = newDate.getMonth()+1;
day = newDate.getDate();
arr.push(fullYear);
arr.push(month);
arr.push(day);
if(arr[1] < 10) {
arr[1] = '0'+arr[1]
}
if(arr[2] < 10) arr[2] = '0'+arr[2];
standardTime = arr.join('/');
return standardTime;
}
if(/^\d{13}$/.test(timestamp)) {
newDate.setTime(timestamp);
standardTime = getArr(newDate);
}else if(/^\d{16}$/.test(timestamp)) {
newDate.setTime(timeStamp / 1000);
standardTime = getArr(newDate);
} else {
console.error("时间戳格式不正确");
}
// 返回需要的时间格式
return standardTime.replace(/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/, newStandard);
};
/*
* 将日期字符串转为时间戳
* @param {Date} date(天) "0-31"
* return 1484733218000
*/
fay.toTimeStamp = function (date) {
if(date) {
var d = new Date();
d.setDate(d.getDate() + date);
return d;
}else {
return Date.parse(new Date());
}
};
// 长按事件
fay.longPress = function (ele, cb, clickCb) {
var timeOut = 0;
ele.on({
touchstart: function (e) {
var objTarget = e.target ? e.target : e.srcElement;
console.log($(this).find(".panel_info").attr("data-id"));
timeOut = setTimeout(function () {
var name = prompt("请修改礼品单",'');
}, 500);
return false;
},
touchmove: function (e) {
clearTimeout(timeOut);
timeOut = 0;
return false;
},
touchend: function (e) {
clearTimeout(timeOut);
if(timeOut) {
clickCb;
}
return false;
}
})
};
fay.throttle = function(method, context, delay) {
var delayTime = delay || 1000;
clearTimeout(context.tId);
context.tId = setTimeout(function(){
method.call(context);
}, delayTime);
};
return fay;
})()
function ease(x) {
return Math.sqrt(1 - Math.pow(x - 1, 2));
}
function reverseEase(y) {
return 1 - Math.sqrt(1 - y * y);
}
javascript 实用工具函数的更多相关文章
- JQuery实践--实用工具函数
实用工具函数,$命名空间的一系列函数,但不操作包装集.它要么操作除DOM元素以外的Javascript对象,要么执行一些非对象相关的操作. JQuery的浏览器检测标志可在任何就绪处理程序执行之前使用 ...
- Lodash JavaScript 实用工具库
地址:https://www.lodashjs.com/ Lodash 是一个一致性.模块化.高性能的 JavaScript 实用工具库.
- jQuery实用工具函数
1. 什么是工具函数 在jQuery中,工具函数是指直接依附于jQuery对象.针对jquery对象本身定义的说法,即全局性的函数,我们统称为工具函数,或Utilities函数.它们有一个明显的特征, ...
- 读<jQuery 权威指南>[6]--实用工具函数
官方地址:http://api.jquery.com/category/utilities/ 一.数组和对象操作 1. $.each——遍历 $.each(obj,function(param1,pa ...
- javascript常用工具函数总结(不定期补充)未指定标题的文章
前言 以下代码来自:自己写的.工作项目框架上用到的.其他框架源码上的.网上看到的. 主要是作为工具函数,服务于框架业务,自身不依赖于其他框架类库,部分使用到es6/es7的语法使用时要注意转码 虽然尽 ...
- 你要的几个JS实用工具函数(持续更新)
今天,我们来总结下我们平常使用的工具函数,希望对大家有用.1.封装fetch 源码: /** * 封装fetch函数,用Promise做回调 * @type {{get: (function(*=)) ...
- JavaScript常用工具函数
检测数据是不是除了symbol外的原始数据 function isStatic(value) { return ( typeof value === 'string' || typeof value ...
- JavaScript 设计模式 - 工具函数
1.类式继承,模拟面向对象语言的继承方式 function extend(subClass, superClass) { var F = function() {}; F.prototype = su ...
- JavaScript 实用工具库 : lodashjs
首页地址:https://www.lodashjs.com/
随机推荐
- 5 个关键点!优化你的 UI 原型设计
当你和你的团队着手开始一个产品开发的时候,最开始的一步一般是绘制线框图,这是大部分产品项目的第一步,它不复杂但是却对整个产品的完成形态和质量有着至关重要的作用. 很多刚开始工作设计师或者产品经理都会提 ...
- adb占用
输入netstat -ano | findstr "5037" .然后会弹出提示告诉你哪些进程占用了该端口,记住非0地址的后面的数字 打开任务管理器,点击“进程“,“查看”-“选择 ...
- hadoop 学习(二)ubuntu hadoop 2.7.0 伪分部安装
本篇是基于上一篇,ubuntu 安装hadoop单机版基础上的 1.配置core-site.xml /usr/local/hadoop/etc/hadoop/core-site.xml 包含了hado ...
- part1:14-开发板介绍和开发板系统安装准备
开发板介绍: Norflash与nandflash都充当硬盘,前者容量小,速度快,价格高:后者容量大,速度相对慢,价格低. 一般把这些系统都安装到nandflash里面. 1.安装到nandflash ...
- 自然语言处理--中文文本向量化counterVectorizer()
1.载入文档 #!/usr/bin/python # -*- coding: utf-8 -*- import pandas as pd import re import jieba from skl ...
- 《Delphi XE6 android 编程入门教程》推荐
近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...
- js限制上传图片类型和大小
<script type="text/javascript"> function checkFile(brandLogo){ var file=brandLogo.va ...
- POJ 2728 Desert King (最优比率树)
题意:有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水,只要两个村庄之间有一条路即可,建造水管距离为坐标之间的欧几里德距离,费用为海拔之差,现在要求方案使得费用与距离的比值最小,很显然,这个题目 ...
- python corrcoef
该函数得到相关系数矩阵. 例子: vc=[1,2,39,0,8] vb=[1,2,38,0,8] print mean(multiply((vc-mean(vc)),(vb-mean(vb))))/( ...
- 编译hbase-1.2.3源代码
目录 目录 1 1. 约定 1 2. 安装jdk 1 3. 安装maven 1 4. 网络配置 2 4.1. eclipse 3 4.2. maven 3 5. 从hbase官网下载源代码包: 4 6 ...