humble-utils
Version:
javascript utils
110 lines (108 loc) • 3.08 kB
text/typescript
/**
* @Author : Humility
* @Date : 2021-10-23 23:12:04
* @LastEditTime : 2021-10-30 17:05:09
* @LastEditors : Humility
* @FilePath : \humble-utils\src\array.ts
* @Description : 数组
*/
/**
* 洗牌算法-把数组打乱顺序
* @param {Array} arr 需要打乱的数组
* @return {Array} 打乱后的数组
*/
export function shuffle(arr: Array<any>): Array<any> {
let result = [],
random;
while (arr.length > 0) {
random = Math.floor(Math.random() * arr.length);
result.push(arr[random])
arr.splice(random, 1)
}
return result;
};
/**
* 判断数组中是否存在某个值
* @param {Array} arr 目标数组
* @param {string|number|null} val 需要判断的值
* @return {Boolean}
*/
export function contains(arr: Array<string | number | null>, val: string | number | null) {
return arr.indexOf(val) != -1 ? true : false;
};
/**
* 数组排序
* @description: 排序类型 1:降序 2:升序 3:随机
* @param {Array} arr 需要排序的数组
* @param {Number} type 排序类型
* @return {Array} 排序后的数组
*/
export function sort(arr: Array<string | number | null>, type = 1) {
return arr.sort(function (a: any, b: any): any {
switch (type) {
case 1:
return a - b;
case 2:
return b - a;
case 3:
return Math.random() - 0.5;
default:
return arr;
}
})
};
/**
* 数组去重
* @param {Array<string|number|null>} arr 目标数组
* @return {Array} 去除后的数组
*/
export function unique(arr: Array<string | number | null>) {
return [...new Set(arr)];
};
/**
* 两个数组的并集
* @param {Array} arr1 第一个数组
* @param {Array} arr2 第二个数组
* @return {Array} 数组的并集
*/
export function union(arr1: Array<any>, arr2: Array<any>) {
return [...arr1, ...arr2]
};
/**
* 两个数组的交集
* @param {Array} arr1 第一个数组
* @param {Array} arr2 第二个数组
* @return {Array} 数组的交集
*/
export function intersect(arr1: Array<any>, arr2: Array<any>) {
return arr1.filter(item => {
return arr2.indexOf(item) != -1;
})
};
/**
* 数组中删除第一个元素
* @param {Array} arr 目标数组
* @param {any} ele 需要删除的元素
* @return {Array} 删除该数组第一个元素后的数组
*/
export function removeOne(arr: Array<any>, ele: any) {
let index = arr.indexOf(ele);
if (index > -1) {
arr.splice(index, 1);
}
return arr;
};
/**
* 数组中删除某个元素
* @param {Array} arr 目标数组
* @param {any} ele 需要删除的元素
* @return {Array} 删除该数组该元素后的数组
*/
export function removeAll(arr: Array<any>, ele: any) {
let newArr = [];
for (let i = 0, len = arr.length; i < len; i++) {
let a = arr[i];
a != ele && newArr.push(a);
}
return newArr;
}