1、獲取指定範圍內的隨機數
1 2 3 |
|
2、隨機獲取數組中的元素
1 2 3 4 |
|
3、生成從0到指定值的數字數組
1 2 3 4 5 |
|
等同於:
1 2 3 4 5 6 7 |
|
4、打亂數字數組的順序
1 2 3 4 |
|
5、對象轉換爲數組
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
6、驗證是否爲數組
1 2 3 |
|
7、獲取數組中最大或者最小值
1 2 3 4 5 6 |
|
8、清空數組
1 2 3 4 5 6 7 8 9 10 11 |
|
9、保留指定小數位
1 2 |
|
10、生成指定長度的隨機字母數字字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
11、找出數組中出現次數最的元素,並給出其出現過的位置
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 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;
}
方法三:利用下標
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去重
function uniqueArr(arr) {
return Array.from(new Set(arr));
}
二、包含對象的二維數組去重:
假設有這樣的一個二維數組,數組裏面多個對象的屬性至少有一個都一樣,那就該如何去除重複的數據呢?這裏總結一下兩種方法:
方法一:雙重循環去除法
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來實現
function uniqueArr(arr, key) {
var hash = {};
return arr.reduce(function(item, next) {
hash[next[key]] ? '' : hash[next[key]] = true && item.push(next);
return item
}, []);
}
例子:
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');