西部数据

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("?") + , url.length).split("&");
var returnValue;
for (var i = ; i < paraString.length; i++) {
var tempParas = paraString[i].split('=')[];
var parasValue = paraString[i].split('=')[];
if (tempParas === name)
returnValue = parasValue;
}
if (!returnValue) {
return "";
} else {
if (returnValue.indexOf("#") != -) {
returnValue = returnValue.split("#")[];
}
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('=')[]
_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 = ;
} else if (phoneData.catName === '中国联通') {
applyData.PhoneType =
} else if (phoneData.catName === '中国电信') {
applyData.PhoneType =
} else {
applyData.PhoneType =
}
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
*/
~~( + Math.random() * )
/**
* Android 输入法键盘 和 input 问题
*/
if(getSys() === 'Android') {
window.addEventListener("resize", function() {
if(document.activeElement.tagName=="INPUT" || document.activeElement.tagName=="TEXTAREA") {
window.setTimeout(function() {
document.activeElement.scrollIntoViewIfNeeded();
}, );
}
})
}
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)
05-16 13:50