export default class ArrayUtils { /** * 移除元素 */ static removeFromArr(arr: Array, obj: any) { let index = arr.indexOf(obj); arr.splice(index, 1); } static randomFromArr(arr: Array) { let index = Math.floor(Math.random() * arr.length); return arr[index]; } /** * 数组随机排序 */ static shuffle(arr: Array) { return arr.sort(function () { return Math.random() - 0.5; }); } static indexOf(arr, callback, ctx?) { for (var i = 0; i < arr.length; i++) { if (callback.call(ctx, this[i], i)) return i; } return -1; } static each(arr, callback, context) { if (typeof callback !== 'function') throw new TypeError(); for (let i = 0, len = arr.length; i < len; i++) { if (callback.call(context, arr[i], i, arr)) break; } } static async queue(arr) { let res = null; for (let promise of arr) { res = await promise(res) } return await res; } static getRandomArray(arr, count) { let shuffled = arr.slice(0); let len = arr.length; let min = len - count, temp, index; while (len-- > min) { index = Math.floor((len + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[len]; shuffled[len] = temp; } return shuffled.slice(min); } }