-
Notifications
You must be signed in to change notification settings - Fork 1
/
array.ts
49 lines (46 loc) · 1.13 KB
/
array.ts
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
41
42
43
44
45
46
47
48
49
/**
* @description 数组去重,缺点不能去除{}
* @param {Array} arr
* @return {*} 不修改原数组,返回新数组
*/
export const arrayUnique = (arr: Array<any>) => {
return [...new Set(arr)];
};
/**
* @description 洗牌算法
* @param {Array} arr
* @return {*} 不修改原数组,返回新数组
*/
export const arrayShuffle = (arr: Array<any>) => {
const result = [...arr];
for (let i = result.length - 1; i >= 0; i -= 1) {
const randomIndex = Math.floor(Math.random() * (i + 1)); // 随机下标
const randomVal = result[randomIndex]; // 随机下标的值
// 互换位置
result[randomIndex] = result[i];
result[i] = randomVal;
}
return result;
};
/**
* @description 获取数组交集
* @param {any} a
* @param {any} b
* @return {*}
*/
export const getArrayIntersection = (a: any[], b: any[]) => {
return a.filter((v) => {
return b.indexOf(v) > -1;
});
};
/**
* @description 获取数组差集
* @param {any} a
* @param {any} b
* @return {*}
*/
export const getArrayDifference = (a: any[], b: any[]) => {
return a.filter((v) => {
return b.indexOf(v) === -1;
});
};