一些常用js工具类

一些自己用的比较多的js方法

1、JS判断设备来源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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转成流格式

1
2
3
4
5
6
7
8
9
10
11
12
13
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参数的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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、数组去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// 方法一(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参数

1
2
3
4
5
6
7
8
9
10
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