JS開發中經常使用的小技巧

一、獲取指定範圍內的隨機數

1
2
3
function  getRadomNum(min,max){
     return   Math.floor(Math.random() * (max - min + 1)) + min;
}

二、隨機獲取數組中的元素

1
2
3
4
function  getRadomFromArr(arr){
     return  arr[Math.floor(Math.random()*arr.length)];
}
    

三、生成從0到指定值的數字數組 

1
2
3
4
5
function  getArray(len) {
     var  arr = [],i = 1;
     for  (; arr.push(i++) < len;);
     console.log(arr)
}

等同於:javascript

1
2
3
4
5
6
7
function  getArray(len) {
     var  arr = [],i = 1;
     for  (; i < len; i++) {
         arr.push(i)
     }
     console.log(arr)
}

四、打亂數字數組的順序

1
2
3
4
var  arr = [1, 2, 3, 4, 5, 6, 7,  'a' 'dsfs' , 8, 9,  'v' ];
arr.sort( function () {
     return  Math.random() - 0.5
});

五、對象轉換爲數組

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//注意對象必須是如下格式的才能夠經過此方式轉化爲數組
//獲取的DOM集合,以及函數的arguments也能夠經過此方式轉化爲數組
var  obj = {
     0:  'qian' ,
     1:  'long' ,
     2:  'chu' ,
     3:  'tian' ,
     length: 4
 
}
var  objArr = Array.prototype.slice.call(obj);
// var objArr = [].slice.call(obj);
// var objArr = Array.prototype.slice.apply(obj);
console.log(objArr)

六、驗證是否爲數組

1
2
3
function  isArray(obj) {
     return  Object.prototype.toString.call(obj) ===  '[object Array]' ;
}

七、獲取數組中最大或者最小值 

1
2
3
4
5
6
function  maxAndMin(arr){
     return  {
        max:Math.max.apply( null ,arr.join( ',' ).split( ',' )),
        min:Math.min.apply( null ,arr.join( ',' ).split( ',' ))
     }
}

八、清空數組

1
2
3
4
5
6
7
8
9
10
11
//方式一 經過將長度設置爲0
var  arr = [1, 2, 3, 4, 5];
arr.length = 0;
 
//方式二 經過splice方法
var  arr = [1, 2, 3, 4, 5];
arr.splice(0, arr.length);
 
//方式三 經過將空數組 [] 賦值給數組(嚴格意義來講這只是將ary從新賦值爲空數組,以前的數組若是沒有引用在指向它將等待垃圾回收。)
var  arr = [1, 2, 3, 4, 5];
arr = [];

九、保留指定小數位

1
2
var  num =4.345678;
num = num.toFixed(4);   // 4.3457 第四位小數位以四捨五入計算

十、生成指定長度的隨機字母數字字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 生成指定長度的隨機字母數字字符串
/*寫法一
function getRandomStr(len) {
     var str = "";
     for (; str.length < len; str += Math.random().toString(36).substr(2));
     return str.substr(0, len);
}
寫法二
function getRandomStr(len) {
     var str = "";
     for (; str.length < len;) {
         str += Math.random().toString(36).substr(2);
     }
     return str.substr(0, len);
}*/
/*寫法三*/
function  getRandomStr(len) {
     for  ( var  str =  '' ; str.length < len; str += Math.random().toString(36).substr(2));
     return  str.substr(0, len)
}

十一、找出數組中出現次數最的元素,並給出其出現過的位置

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
function  getMaxAndIndex(arr) {
     var  obj = {};
     arr.forEach( function (item, index) {
         if  (!obj[item]) {
             obj[item] = {
                 indexs: [index]
             }
         else  {
             obj[item][ 'indexs' ].push(index);
         }
     });
     var  num = 0;  //記錄出現次數最大值
     var  str =  '' //記錄出現次數最多的字符
     var  reArr;  //返回最大值的位置數組
     for  ( var  attr  in  obj) {
         var  temp = obj[attr][ 'indexs' ];
         if  (temp.length > num) {
             num = temp.length;
             str = attr;
             reArr = temp;
         }
     }
     return  {
         maxStr: str,
         indexs: reArr
     }
}

 

1、簡單一維數組的去重:

簡單一維數組的去重方法有不少,這種數組裏面的值都是普通的數據類型,並無對象,所以去重方法有不少,這裏總結一下經常使用的四種方法(網上還有一些其它的方法):
方法一:雙層循環去重java

function uniqueArr(arr) { var result = []; for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] === arr[j]) { j = ++i; } } result.push(arr[i]); } return result; }

方法二:利用對象的屬性不能相同去重數組

function uniqueArr(arr) { var result = []; var obj = {}; for (var i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { obj[arr[i]] = 1; result.push(arr[i]); } } return result; }

方法三:利用下標app

function uniqueArr(arr) { var result = [arr[0]]; for (var i = 1; i < arr.length; i++) { if (result.indexOf(arr[i]) == -1) { result.push(arr[i]); } } return result; }

方法四:ES6去重dom

function uniqueArr(arr) { return Array.from(new Set(arr)); }

2、包含對象的二維數組去重:

假設有這樣的一個二維數組,數組裏面多個對象的屬性至少有一個都同樣,那就該如何去除重複的數據呢?這裏總結一下兩種方法:
方法一:雙重循環去除法函數

function uniqueArr(arr, key) { var newArr = []; for (var i = 0; i < arr.length; i++) { var flag = true; for (var j = 0; j < newArr.length; j++) { if (arr[i][key] == newArr[j][key]) { flag = false; } } if (flag) newArr.push(arr[i]); } return newArr; }

方法二:利用reduce來實現ui

function uniqueArr(arr, key) { var hash = {}; return arr.reduce(function(item, next) { hash[next[key]] ? '' : hash[next[key]] = true && item.push(next); return item }, []); }

例子:lua

var arr = [{ id: '001', name: 'Jack' }, { id: '002', name: 'Eric' }, { id: '003', name: 'Tom' }, { id: '003', name: 'Lucy' }, { id: '002', name: 'Lucy' }, { id: '004', name: 'Jacky' }, ] uniqueArr(arr, 'id');
相關文章
相關標籤/搜索