UNPKG

discord-vatron

Version:

Módulo para facilitar la interacción con la API de Discord

90 lines (72 loc) 2.77 kB
module.exports = class Coleccion extends Map { constructor(iterable) { super(iterable); } map(f) { if(typeof(f) != 'function') return console.error('No has pasado una función en el método map.'); return this.array().map(f); } algunoCumple(f) { if(typeof(f) != 'function') return console.error('No has pasado una función en el método algunoCumple.'); return this.array().some(f); } todosCumplen(f) { if(typeof(f) != 'function') return console.error('No has pasado una función en el método todosCumplen.'); return this.array().every(f); } encontrar(f) { if(typeof(f) != 'function') return console.error('No has pasado una función en el método encontrar.'); return this.array().find(f); } filtrar(f) { if(typeof(f) != 'function') return console.error('No has pasado una función en el método filtrar.'); const col2 = new Coleccion(); this.claves().filter(x => f(this.get(x))).forEach(k => { col2.set(k, this.get(k)); }); return col2; } ordenar(f) { if(typeof(f) != 'function') return console.error('No has pasado una función en el método filtrar.'); const col2 = new Coleccion(); this.claves().sort((a, b) => f(this.get(a), this.get(b))).forEach(k => { col2.set(k, this.get(k)); }); return col2; } primero() { return this.array()[0] || null; } ultimo() { return this.array()[this.array().length-1] || null; } aleatorio(num = 1) { if(!this.array().length) return null; if(num <= 0) num = 1; if(this.array().length < num) return console.error('El número de elementos de la colección es mayor al específicado.'); let array = this.claves(); return num <= 1 ? this.array()[Math.floor(Math.random() * this.array().length)] : [...new Array(num)].map(() => { const el = array[Math.floor(Math.random() * array.length)]; array = array.filter(x => JSON.stringify(x) != JSON.stringify(el)); return this.has(el) ? this.get(el) : null; }); } claves() { let array = []; const col2 = new Map(this); let it = col2.keys(); for(var i = 0; i < this.size; i++) { array.push(it.next().value); } return array; } array() { let array = []; const col2 = new Map(this); let it = col2.values(); for(var i = 0; i < this.size; i++) { array.push(it.next().value); } return array; } }