常用方法函数

1.深复制

// 1.深复制
function deepCopy(source) {
var result = {};
for (var key in source) {
result[key] = typeof source[key] === 'object' ? deepCopy(source[key]) : source[key];
} return result;
};

2.字符串转对象

// 2.字符串转对象
function str2obj (str) {
if (!str) return {};
if (str.indexOf('{') >= 0 || str.indexOf('[') >= 0) {
return self.eval(str);
} else {
return str;
}
}

3.去除空格

// 3.去除空格
function Trim(str, g) {
var result = ''; result = str.replace(/(^\s+)|(\s+$)/g, '');
if (g.toLowerCase() == 'g') {
result = result.replace(/\s/g, '');
} return result;
}

4.对字符串进行加密

//4.对字符串进行加密
function compileStr(code) {
var c=String.fromCharCode(code.charCodeAt(0)+code.length);
for(var i=1;i<code.length;i++)
{
c+=String.fromCharCode(code.charCodeAt(i)+code.charCodeAt(i-1));
}
return escape(c);
}

5.字符串进行解密

 //5.字符串进行解密
function uncompileStr(code) {
code=unescape(code);
var c=String.fromCharCode(code.charCodeAt(0)-code.length);
for(var i=1;i<code.length;i++)
{
c+=String.fromCharCode(code.charCodeAt(i)-c.charCodeAt(i-1));
}
return c;
}

6.获取cookie值

// 6.获取cookie值
function getCookie(name) {
var arr, reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); if (arr = document.cookie.match(reg)) {
return unescape(arr[2]);
} else {
return null;
}
}

7.设置cookie值

// 7.设置cookie值
function setCookie(name,value, hours) {
hours = 24;
var exp = new Date();
exp.setTime(exp.getTime() + hours*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

8.时间格式化

// 8.时间格式化
function formatDate(timeNum, formatStr) { //YYYY-MM-DD hh:mm:ss
formatStr = 'YYYY-MM-DD';
if (!timeNum && timeNum !== 0) return '';
var date = new Date(timeNum);
var YYYY = date.getFullYear();
var MM = date.getMonth() < 9 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
var DD = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
var hh = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
var mm = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var ss = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return formatStr.replace('YYYY', YYYY).replace('MM', MM).replace('DD', DD).replace('hh', hh).replace('mm', mm).replace('ss', ss);
}

9.时间格式化 年月日 星期 时分秒

/**
* 9.时间格式化 年月日 星期 时分秒
* @param {*} str
*/
function formatDateByDay(str) {
var date = new Date(); date.setTime(str); var today = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var week = today[date.getDay()]; var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
var ss = date.getSeconds(); var dateByDay = year + '-' + month + '-' + day + '/' + week + ' ' + hour + ':' + min + ':' + ss; return dateByDay; }

10.格式化时间到毫秒

/**
* 10.格式化时间到毫秒
* @param {*} v
* @param {*} fmt
*/
function fmtDateByMilliseconds(v, fmt = 'yyyy-MM-dd HH:mm:ss:mmm') {
if (v) {
var date = new Date(v);
var y = date.getFullYear().toString();
var M = date.getMonth() < 9 ? ('0' + (date.getMonth() + 1)) : (date.getMonth() + 1).toString();
var d = date.getDate() < 10 ? ('0' + date.getDate()) : date.getDate().toString();
var h = date.getHours() < 10 ? ('0' + date.getHours()) : date.getHours().toString();
var m = date.getMinutes() < 10 ? ('0' + date.getMinutes()) : date.getMinutes().toString();
var s = date.getSeconds() < 10 ? ('0' + date.getSeconds()) : date.getSeconds().toString();
var mmm = date.getMilliseconds() < 10 ? ('0' + date.getMilliseconds()) : date.getMilliseconds().toString();
if(date.getMilliseconds() < 10) {
mmm = '00' + date.getMilliseconds();
} else if(date.getMilliseconds() < 100) {
mmm = '0' + date.getMilliseconds();
} else {
mmm = date.getMilliseconds().toString();
}
fmt = fmt.replace('yyyy', y).replace('MM', M)
.replace('dd', d).replace('HH', h)
.replace('mm', m).replace('ss', s)
.replace('mmm', mmm); return fmt;
}
return '';
}

11.首字母大写

//11.首字母大写
function lowercaseFirst (str) {
return str[0].toLowerCase() + str.substring(1);
}

12.组装图片路径

/**
* 12.组装图片路径
* @param {*} errorPath 默认图片路径
* @param {*} sourcePath 源路径
* @param {*} thumb 相对路径
*/
function getThumbUrl (errorPath, sourcePath, thumb) {
var urlThumb = ''; if (!thumb || thumb === 'undefined' || thumb === null || thumb === '') {
urlThumb = errorPath;
} else {
urlThumb = `${sourcePath}${thumb}`;
} return urlThumb;
}

13.自定义处理空白图片

/**
* 13.自定义处理空白图片
* defalutImg要替换的默认图片
*/
function checkDefalutImg(defalutImgUrl, imgUrl) {
var recUrl = ''; if (!imgUrl) {
recUrl = defalutImgUrl;
} else {
recUrl = imgUrl;
} return 'src=' + recUrl;
}

14.获取指定长度字符串

/**
* 14.获取指定长度字符串
* @param {*} str 字符对象
* @param {*} length 截取长度
*/
function getSubstring(str, length) {
var result = '';
if (str && str !== '' && !isNaN(length) && str.trim().length > length) {
var spaceLen = str.substring(0, length ).split(' ').length ;
result = str.substring(0, length - 1 + spaceLen-1 ) + '...';
} else {
result = str;
}
return result;
}

15.截取字符串末尾数

/**
* 15.截取字符串末尾数
* @param {*} str 截取的字符串
* @param {*} length 截取的长度
*/
function getSubstringEnd(str, length) {
var result = '';
var len = str.trim().length; if (str && str !== '' && !isNaN(length) && str.trim().length > length) { result = str.substring(len - length, len);
} else {
result = str;
} return result;
}

16.检测是站内还是站外链接

 /**
* 16.检测是站内还是站外链接
* @param {*} testUrl
* @return true 站内链接 false 站外链接
* baidu.com 是对应公司的域名
*/
function checkInternalUrl(testUrl) {
return /^http(s)?:\/\/([a-zA-Z0-9][a-zA-Z0-9-]+\.){0,}baidu.com/i.test(testUrl);
}

17.去掉HTML标签

/**
* 17.去掉HTML标签
*/
function removeHtml(input) {
return input && input.replace(/<(?:.|\n)*?>/gm, '')
.replace(/(&rdquo;)/g, '"')
.replace(/&ldquo;/g, '"')
.replace(/&mdash;/g, '-')
.replace(/&nbsp;/g, '')
.replace(/&gt;/g, '>')
.replace(/&lt;/g, '<')
.replace(/<[\w\s"':=/]*/, '');
}

18.数值截取

/**
* 18.数值截取
* @param arr 数值
* @param start 开始位置
* @param end 结束位置
* @returns {*}
*/
function slice(arr, start, end) {
if (arr && arr.slice) {
return arr.slice(start, end);
} return arr;
}

19.手机号码隐藏中间四位

/**
* 19.手机号码隐藏中间四位
*/
function telFormat(tel) {
var MAX_NUM = 11;
var telStr = tel.toString();
var telResult = ''; if (!isNaN(telStr) && telStr.length === MAX_NUM) {
var reg = /(\d{3})\d{4}(\d{4})/; telResult = telStr.replace(reg, '$1****$2');
} return telResult;
}

20.处理a标签url为空的情况

/**
* 20.处理a标签url为空的情况
*/
function getAElement(urlStr, targeName) {
var aElement = ''; if (urlStr === '' || urlStr === null || urlStr === 'http://' || urlStr === '#') {
aElement = 'herf=javascript:;';
} else {
aElement = 'herf=' + urlStr;
if (targeName) {
aElement = 'herf=' + urlStr + ' target=' + targeName;
}
} return aElement;
}

21.截取点后的内容

/**
* 21.截取点后的内容
* @param {*} string
*/
function getStrDotafter(string) {
var substr = ''; if (string) {
var str = string.lastIndexOf('.');
var str2 = string.length; substr = string.substring(str + 1, str2); } return substr;
}

22.截取点前的内容

/**
* 22.截取点前的内容
* @param {*} string
*/
function getStrDotBefore(string) {
var substr = ''; if (string) {
var str = string.lastIndexOf('.'); substr = string.substring(0, str + 1);
} return substr;
}

23.对象转数组

/**
* 23.对象转数组
*/
function obj2arr(obj = {}) {
var nameList = Object.keys(obj); return nameList.map(n => {
return {value: n, name: obj[n]};
});
}

24.字符串转对象

/**
* 24.字符串转对象
*/
function str2obj(str) {
return JSON.parse(str);
}

25.对象转字符串

/*
* 25.对象转字符串
* */
function obj2str(obj) {
if(!obj) return
return JSON.stringify(obj);
}

26.加法

/**
* 26.加法
* @param {} a
* @param {*} b
*/
function add(a, b) {
a = a * 1;
b = b * 1;
var ia = a.toString().indexOf('.');
var ib = b.toString().indexOf('.');
if (ia < 0 && ib < 0) {
return a + b;
}
if (ia < 0 && ib >= 0) {
var m = b.toString().length - ib - 1;
}
if (ia >= 0 && ib < 0) {
var m = a.toString().length - ia - 1;
}
if (ia >= 0 && ib >= 0) {
var ma = a.toString().length - ia - 1;
var mb = b.toString().length - ib - 1;
var m = ma > mb ? ma : mb;
}
return (a * Math.pow(10, m) + b * Math.pow(10, m)) / Math.pow(10, m);
}

27.数字金额转大写

/*
* 27.数字金额转大写
* */
function numTurnCh(n) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n))
return "数据非法";
var unit = "千百拾亿千百拾万千百拾元角分", str = "";
n += "00";
var p = n.indexOf('.');
if (p >= 0)
n = n.substring(0, p) + n.substr(p + 1, 2);
unit = unit.substr(unit.length - n.length);
for (var i = 0; i < n.length; i++)
str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
}

28.格式化金额

/*
* 28.格式化金额
* v:金额
* num:四舍五入的小数位
* */
function fmtAmount(v, isCh = false, num = 2) {
if ((!v || v <= 0) && isCh) return '面议';
if (isNaN(Number(v))) return '';
return Number(v).toFixed(num);
}

29.数组去重

/**
* 29.数组去重
*/
function unique4(array) {
array.sort();
var re = [array[0]];
for (var i = 1; i < array.length; i++) {
if (array[i] !== re[re.length - 1]) {
re.push(array[i]);
}
}
return re;
}

30.base64转blob

base64ToBlob({ b64data = '', contentType = '', sliceSize = 512 } = {}) {
return new Promise((resolve, reject) => {
// 使用 atob() 方法将数据解码
const byteCharacters = atob(b64data);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = [];
for (let i = 0; i < slice.length; i++) {
byteNumbers.push(slice.charCodeAt(i));
}
// 8 位无符号整数值的类型化数组。内容将初始化为 0。
// 如果无法分配请求数目的字节,则将引发异常。
byteArrays.push(new Uint8Array(byteNumbers));
}
let result = new Blob(byteArrays, {
type: contentType
});
result = Object.assign(result, {
// 这里一定要处理一下 URL.createObjectURL
preview: URL.createObjectURL(result),
name: 'XXX.png'
});
resolve(result);
});
}

31.图片下载方法

downloadImg(srcList, i = 0, Toast) {
const u = navigator.userAgent;
if (/MicroMessenger/gi.test(u) && /nettype/i.test(u)) {
Toast('微信内无法进行此操作,请手动长按图片进行保存,或在外部浏览器进行操作~');
return;
}
const $a = document.createElement('a');
$a.setAttribute('download', srcList[i].replace(/(.*\/)*([^.]+.*)/gi, '$2').split('?')[0]);
$a.setAttribute('href', srcList[i]);
const evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null);
$a.dispatchEvent(evObj);
if (i < srcList.length - 1) {
setTimeout(() => {
this.downloadImg(srcList, ++i);
}, 300);
} else {
setTimeout(() => {
Toast('如有部分图片保存失败,请手动长按图片进行保存~');
}, 1000);
}
}

32.链接转换二维码

// 链接转换二维码
formatUrl2Qrcode(path, userOpts = {}) {
const QRCode = require('qrcode');
const opts = Object.assign(
{},
{
errorCorrectionLevel: 'H',
type: 'image/png',
rendererOpts: {
quality: 0.3
}
},
userOpts
);
let url1 = '';
QRCode.toDataURL(path, opts, (err, url) => {
if (err) {
console.log(err);
}
url1 = url;
}); return url1;
}

33.检查系统(ios/Android)

checkSystem() {
// 判断系统
const o = null;
const u = navigator.userAgent,
app = navigator.appVersion;
const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // g
const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
if (isIOS) {
return 'ios';
} else {
return 'android';
}
}

34.获取url传过来的参数

getUrlQuery(name, Url) {
// URL GET 获取值
const reg = new RegExp('(^|\\?|&)' + name + '=([^&]*)(\\s|&|$)', 'i'),
url = Url || window.location.href;
if (reg.test(url)) return unescape(RegExp.$2.replace(/\+/g, ' '));
return '';
}

35.计算两个时间戳的间隔

timestamp(startTimes, endTimes = new Date().getTime()) {
let totalSeconds = endTimes - startTimes; // 传入时间戳与当前时间相差
const d = parseInt(totalSeconds / (24 * 60 * 60 * 1000));
totalSeconds = totalSeconds % (24 * 60 * 60 * 1000);
const h = parseInt(totalSeconds / (60 * 60 * 1000));
totalSeconds = totalSeconds % (60 * 60 * 1000);
const m = parseInt(totalSeconds / (60 * 1000));
totalSeconds = totalSeconds % (60 * 1000);
const s = parseInt(totalSeconds / 1000);
return { d, h, m, s };
}

36.获取本月开始时间/结束时间 typ: start end

getMonthDate(type) {
const now = new Date(); // 当前日期
let nowDayOfWeek = now.getDay(); // 今天本周的第几天
if (nowDayOfWeek === 0) {
nowDayOfWeek = 6;
} else {
nowDayOfWeek = nowDayOfWeek - 1;
}
const nowDay = now.getDate(); // 当前日
const nowMonth = now.getMonth(); // 当前月
let nowYear = now.getYear(); // 当前年
nowYear += nowYear < 2000 ? 1900 : 0; // // 格式化日期:yyyy-MM-dd
function formatDate(date) {
const myyear = date.getFullYear();
let mymonth = date.getMonth() + 1;
let myweekday = date.getDate(); if (mymonth < 10) {
mymonth = '0' + mymonth;
}
if (myweekday < 10) {
myweekday = '0' + myweekday;
}
return myyear + '-' + mymonth + '-' + myweekday;
} // 获得本月的开始日期
function getMonthStartDate() {
const monthStartDate = new Date(nowYear, nowMonth, 1);
return formatDate(monthStartDate);
}
// 获得某月的天数
function getMonthDays(myMonth) {
const monthStartDate = new Date(nowYear, myMonth, 1);
const monthEndDate = new Date(nowYear, myMonth + 1, 1);
const days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
return days;
} // 获得本月的结束日期
function getMonthEndDate() {
const monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
return formatDate(monthEndDate);
}
if (type === 'start') {
const monthStartDate = new Date(nowYear, nowMonth, 1);
return formatDate(monthStartDate);
} else {
const monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
return formatDate(monthEndDate);
}
}

常用js方法函数的更多相关文章

  1. 常用js方法整理common.js

    项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data ...

  2. 项目中常用js方法整理common.js

    抽空把项目中常用js方法整理成了common.js,都是网上搜集而来的,大家一起分享吧. var h = {}; h.get = function (url, data, ok, error) { $ ...

  3. 常用js方法封装

    常用js方法封装 var myJs = { /* * 格式化日期 * @param dt 日期对象 * @returns {string} 返回值是格式化的字符串日期 */ getDates: fun ...

  4. 常用js方法

    function dateGetter(name, size, offset, trim) { offset = offset || 0; return function (date) { var v ...

  5. Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍

    本节的主要讨论内容是有关dict字典的一些常用的方法函数的使用和范例展示. 1. clear清除字典数据 语法结构如下: dict_obj.clear() 示例代码如下: dict1 = {'web' ...

  6. 收集JavaScript中常用的方法函数

    本文中,收集了一些比较常用的Javascript函数,希望对学习JS的朋友们有所帮助. 1. 字符串长度截取 function cutstr(str, len) { var temp, icount ...

  7. 函数式编程 —— 将 JS 方法函数化

    前言 JS 调用方法的风格为 obj.method(...),例如 str.indexOf(...),arr.slice(...).但有时出于某些目的,我们不希望这种风格.例如 Node.js 的源码 ...

  8. 常用js方法整理(个人)

    开头总要有点废话 今天想了下,还是分享下自己平时积累的一些实用性较高的js方法,供大家指点和评价.本想分篇介绍,发现有点画蛇添足.整理了下也没多少拿得出手的方法,自然有一些是网上看到的个人觉得很有实用 ...

  9. Dynamics CRM 常用 JS 方法集合

    JS部分 拿到字段的值 var value= Xrm.Page.getAttribute("attributename").getValue(); Xrm.Page.getAttr ...

随机推荐

  1. 给控件做数字签名之一:将控件打包为Web发布包 [转]

    微软代码签名证书使用指南 http://www.wotrust.com/support/signcode_guide.htm 签名重要性:http://www.wotrust.com/FAQ/whyS ...

  2. Linux常用的几个vi小命令

    输入跳转命令: 命令行前 Ctrl+A 命令行后 Ctrl+E VI命令中: 当前行 行首  "0" 当前行 行尾  "Shift+4" 当前文档首行首字符:& ...

  3. xml 文件不给提示(以mybatis 的 mapper映射文件为例)

    在xxx.xml 映射文件的头部可以看到 如下: (mybatis generate 自动生成) <!DOCTYPE mapper PUBLIC "-//mybatis.org//DT ...

  4. apache TIME_WAIT解决办法

    最近发现apache与负载均衡器的的连接数过多,而且大部分都是TIME_WAIT,调整apache2.conf后也没效果,最后百度到如下解决方案 通过调整内核参数解决 vi /etc/sysctl.c ...

  5. URAL1306 Sequence Median(卡内存神题)

    给出n个数,n<=250000,求这n个数的中位数,内存限制1mb 卡内存的神题,用数组存下来刚好1mb,再加上执行时消耗内存.立即爆. 因此我们用优先队列存储一半的数. 网上的某些代码,用pr ...

  6. GEM演唱会

    周六去魔都看邓紫棋演唱会,各位看官可能要问.杭州不是也有嚒.为嘛去魔都-..由于po主是逗比哈哈(- ̄▽ ̄-) 早上睡到自然醒,然后開始做午饭.吃完躺沙发上看电视,看到一点多认为应该要出发了(演唱会7 ...

  7. 阿里云数据库RDS迁移,DTS 迁移过程中,是否会锁表,对源数据库是否有影响?

    阿里云数据库RDS迁移,DTS 迁移过程中,是否会锁表,对源数据库是否有影响? DTS 在进行全量数据迁移和增量数据迁移的过程中,均不会对源端数据库进行锁表,因此在全量数据迁移和增量数据迁移的过程中, ...

  8. 学习使用用Eclipse编写java程序

    本文讲解了在Eclipse中完成一个HelloWorld程序的编写过程. 刚刚学习java的同学们可能用 记事本编写java源代码,在命令提示符中完成java程序的编译和运行过程.这样的方法对于学习j ...

  9. sprint3 【每日scrum】 TD助手站立会议第六天

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 在添加日程类型处添加了选择闹钟间隔多长时间相应,并写了闹钟运行的类 在日历各个事件上都增加闹钟显示,并将数据传递给日程和时间表 感觉跟楠哥在设 ...

  10. java ConcurrentHashMap 初识

    “ConcurrentHashMap是一个线程安全的哈希表“,但是不允许key和value为空: HashTable和ConcurrentHashMap都是线程安全的,但是HashTable是同步容器 ...