西部数据
https://item.jd.com/3564471.html#none
打算买一个大硬盘记录代码片段、开发项目、开发工具、电影游戏等……
/** * 获取100天后的日子 * 用来做计划是极好的 */ var d = new Date() d.setDate(d.getDate() + 100) console.log(d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate())
/** * @func * @desc jsonp的基本使用函数 * @params {object} urlObj * @params {string} urlObj.url - jsonp的请求地址 * @params {string} urlObj.jsonpCallback - jsonp的回调函数命名 * @params {function} callback - 要执行的回调函数 */ function jsonp(urlObj, callback) { let url = urlObj.url; let callbackName = urlObj.jsonpCallback; // 先定义一个全局函数,供jsonp调用 window[callbackName] = function(data) { window[callbackName] = undefined; document.body.removeChild(script); callback(data); }; // jsonp的原理,插入一个script标签,并且执行上面的全局函数 let script = document.createElement('script'); script.src = url; document.body.appendChild(script); } /** * js随机数 * 如获取1-21之间的随机数 */ parseInt(Math.random() * 21 + 1);
/** * @func * @desc - 获取当前系统的型号 */ var getSys = function () { var sys = '' if (navigator.userAgent.match(/(iPad|iPhone)/)) { sys = 'IOS'; } else if (navigator.userAgent.match(/(Android)/)) { sys = 'Android'; } return sys; } /** * @func * @desc - 从url地址中根据参数获取指定的值 * @param {string} name - 参数 * @param {string} url - url */ var getUrlParam = function (name, url) { if (!url) url = location.href; var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&"); var returnValue; for (var i = 0; i < paraString.length; i++) { var tempParas = paraString[i].split('=')[0]; var parasValue = paraString[i].split('=')[1]; if (tempParas === name) returnValue = parasValue; } if (!returnValue) { return ""; } else { if (returnValue.indexOf("#") != -1) { returnValue = returnValue.split("#")[0]; } return returnValue; } }
/** * @func * @desc - 获取手机归属地信息 * @param {string} phoneNo - 手机号码 * @param {string} callback - 回调函数 */ var getPhoneData = function(phoneNo, callback) { $.ajax({ url: 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm', type: 'get', data: { tel: phoneNo }, success: function(result) { if (result) { var _data = result.split('=')[1] _data = _data.replace(/\s+/g, "").replace(/<\/?.+?>/g, "").replace(/[\r\n]/g, "").replace(/\'/g, '"').replace(/\:/g, '":').replace(/\,/g, ',"').replace('{', '{"') var phoneData = JSON.parse(_data); console.log(phoneData) if (phoneData.catName === '中国移动') { applyData.PhoneType = 1; } else if (phoneData.catName === '中国联通') { applyData.PhoneType = 2 } else if (phoneData.catName === '中国电信') { applyData.PhoneType = 3 } else { applyData.PhoneType = 0 } applyData.PhoneAddress = phoneData.province } }, error: function(result) { console.info('无法获取手机归属地信息'); }, complete: function() { typeof callback === 'function' && submitApply(); } }) }
/** * @func * @desc - 常用的闭包使用技巧。使_cache像吸血鬼一样活在函数(闭包)内。同时不会污染全局,也不会被修改到 */ var Cache = (function () { var _cache = {}; return { getCache: function (key) { return _cache[key] }, setCache: function (key, value) { _cache[key] = value; } } }());
/** * @func * @desc - 灵活使用闭包的概念。 以下简单的实验说明他们是不同的实例。所以他们各自闭包内的_cache是不相干也不相同的 其实是简单的类与实例的概念。但还是说明一下比较好 毕竟大部分的插件也是这样制作的 */ var Cache = (function () { var _cache = {}; return { getCache: function (key) { return _cache[key] }, setCache: function (key, value) { _cache[key] = value; }, showAllCache: function () { console.log(_cache); } } }); var a = new Cache(); a.setCache('foo', 'bar'); a.showAllCache(); var b = new Cache(); b.setCache('foo', 'bar2'); b.showAllCache(); /* 从输出的结果得知两者的闭包互不相干 */
/** * 0-50 */ ~~(0 + Math.random() * 51)
/** * Android 输入法键盘 和 input 问题 */ if(getSys() === 'Android') { window.addEventListener("resize", function() { if(document.activeElement.tagName=="INPUT" || document.activeElement.tagName=="TEXTAREA") { window.setTimeout(function() { document.activeElement.scrollIntoViewIfNeeded(); }, 0); } }) }
let n = s.toString().replace(/[\`~!@#$^&*()=\-\|{}':;'\\,\[\].<>\?~!@#¥……&*()——|{}【】‘;:”“'。,、?]/g, '')
random任意值到任意值范围
var a = parseInt(Math.random()*(99999999 - 10000000 + 1) + 10000000,10);
// ~~(Math.random() * (99999999 - 10000000 + 1) + 10000000); console.log(a, a.toString().length)
/** * @desc - 生产1W条8位的数字.使用了es6的set。 * set的特性是不允许重复的值存在。利用这个特性来剔除重复的值 */ var _set = new Set(); while(_set.size != 10000) { _set.add(~~(Math.random() * (99999999 - 10000000 + 1) + 10000000)); } /** * @desc - 规则策略类 **/ var rule = function (v) { // 截取后4位 var $_v = v.toString().substr(-4, 4); // 切割为数组方便判断使用 var $_arr = $_v.split(''); return { 'AAAA': function () { return $_arr[0] == $_arr[1] && $_arr[1] == $_arr[2] && $_arr[2] == $_arr[3]}, 'AABB': function () { return $_arr[0] == $_arr[1] && $_arr[2] == $_arr[3]}, 'ABAB': function () { return $_arr[0] == $_arr[2] && $_arr[1] == $_arr[3]}, 'not' : function (n) { return $_v.indexOf(n) < 0} } } var myarr = [] // 使用了es6迭代器专用的遍历 for (var v of _set.values()) { // 获取规则 var _rule = new rule(v) // 判断是否通过规则 if (_rule.not(4) && (_rule.AAAA() || _rule.AABB() || _rule.ABAB())) { myarr.push(v) } } console.log(myarr)