Wd 西部数据

西部数据

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)

 

posted @ 2017-06-16 08:41  贝尔塔猫  阅读(307)  评论(0编辑  收藏  举报