一些常用js工具类

1、JS判断设备来源

 function deviceType(){
        var ua = navigator.userAgent;
        var agent = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];    
        for(var i=0; i<len,len = agent.length; i++){
            if(ua.indexOf(agent[i])>0){         
                break;
            }
        }
    }
    deviceType();
    window.addEventListener('resize', function(){
        deviceType();
    })

    //微信的 有些不太一样
    function isWeixin(){
        var ua = navigator.userAgent.toLowerCase();
        if(ua.match(/MicroMessenger/i)=='micromessenger'){
            return true;
        }else{
            return false;
        }
    }

2、base64转成流格式

dataURLtoBlob(dataurl) {
    var arr = dataurl.split(','),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], {
      type: mime
    });
  }

3、获取指定Url参数的方法

    function GetUrlParam(paraName) {
    var url = document.location.toString();
    var arrObj = url.split("?");

    if (arrObj.length > 1) {
      var arrPara = arrObj[1].split("&");
      var arr;

      for (var i = 0; i < arrPara.length; i++) {
        arr = arrPara[i].split("=");

        if (arr != null && arr[0] == paraName) {
          return arr[1];
        }
      }
      return "";
    }
    else {
      return "";
    }
  }
  
 调用方法: GetUrlParam("id");
 例:网址test.html?id=896&s=q&p=5,则调用 GetUrlParam("p"),返回 5

4、数组去重

// 方法一(IE8以下不支持数组的indexOf方法)
function uniq(array){
    var temp = []; //一个新的临时数组
    for(var i = 0; i < array.length; i++){
        if(temp.indexOf(array[i]) == -1){
            temp.push(array[i]);
        }
    }
    return temp;
}
//方法二:排序后相邻去除法(会打乱原数组的顺序)
function uniq(array){
    array.sort();
    var temp=[array[0]];
    for(var i = 1; i < array.length; i++){
        if( array[i] !== temp[temp.length-1]){
            temp.push(array[i]);
        }
    }
    return temp;
}
// 方法三:es6 set方法
function uq(array) {
		//将array数组转换成set对象,再使用Array.from()方法将set对象转换成数组
		return Array.from(new Set(array));
	}
// 方法四 利用对象中不存在同名的属性
function unique(arr){
    var temp = {}; 
    var tempArr = [],
        len = arr.length;
    for(var i = 0; i< len; i++){
        if(!temp[arr[i]]){
            temp[arr[i]] = 'XX'; // 这里的XX是任意非false的值
            tempArr.push(arr[i])
        }
    }
    return tempArr
}

20180915更新

5、js 将json转为url参数

var json = {
    sh: '上海',
    bj: '北京',
	cq: '重庆'
}
var params = Object.keys(json).map(function (key) {
    // body...
    return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]);
}).join("&");
// 输出结果:sh=%E4%B8%8A%E6%B5%B7&bj=%E5%8C%97%E4%BA%AC&cq=%E9%87%8D%E5%BA%86

文章归类于: 码不停蹄

文章标签: #Javascript

版权声明: 自由转载-署名-非商用