ToonJS v1.0.4: 4 Nuevos Métodos Potentes
ToonJS v1.0.4: 4 Nuevos Métodos Potentes
Nos complace anunciar el lanzamiento de ToonJS v1.0.4, que añade 4 nuevos métodos a la librería, llevándonos a un total de 64 métodos optimizados para manipulación de datos.
🆕 Nuevos Métodos
1. findAll() - Encuentra Todas las Coincidencias
A diferencia de find() que retorna solo la primera coincidencia, findAll() devuelve todas las filas que cumplen la condición.
const data = ToonFactory.from(`
productos[5]{nombre,categoria,precio}:
Laptop,Electrónica,1200
Mouse,Electrónica,25
Teclado,Electrónica,75
Silla,Muebles,300
Escritorio,Muebles,500
`);
// Encuentra TODOS los productos de Electrónica
const electronics = data.findAll(p => p.categoria === 'Electrónica');
console.log(electronics);
// Retorna: [Laptop, Mouse, Teclado]
// Alternativa: usar filter().all()
const sameResult = data.filter(p => p.categoria === 'Electrónica').all();
¿Cuándo usar findAll()?
- ✅ Cuando quieres un array directo sin crear un nuevo Toon
- ✅ Para búsquedas simples donde no necesitas encadenar más operaciones
- ✅ Más eficiente que
filter().all()para casos de uso simples
2. countBy() - Cuenta Ocurrencias por Valor
Este método es perfecto para análisis de frecuencias y distribuciones de datos.
const ventas = ToonFactory.from(`
ventas[8]{producto,ciudad,cantidad}:
Laptop,Barcelona,2
Mouse,Madrid,5
Laptop,Barcelona,1
Teclado,Madrid,3
Laptop,Madrid,2
Mouse,Barcelona,4
Laptop,Barcelona,1
Teclado,Barcelona,2
`);
// Cuenta cuántas ventas hay por producto
const porProducto = ventas.countBy('producto');
console.log(porProducto);
// Output: {
// Laptop: 4,
// Mouse: 2,
// Teclado: 2
// }
// Cuenta ventas por ciudad
const porCiudad = ventas.countBy('ciudad');
console.log(porCiudad);
// Output: {
// Barcelona: 5,
// Madrid: 3
// }
Casos de uso perfectos:
- 📊 Análisis de distribución de categorías
- 🎯 Identificar valores más/menos frecuentes
- 📈 Generar datos para gráficos de barras
- 🔍 Análisis de patrones en logs o eventos
3. getName() - Obtiene el Nombre del Dataset
Método simple pero útil para obtener el nombre del dataset actual.
const data = ToonFactory.from(`
usuarios[3]{nombre,edad}:
Ana,25
Luis,30
María,28
`);
console.log(data.getName());
// Output: "usuarios"
// Útil para logging y debugging
console.log(`Procesando dataset: ${data.getName()}`);
console.log(`Total de filas: ${data.count()}`);
4. setName() - Cambia el Nombre del Dataset
Permite renombrar el dataset, útil en pipelines de transformación donde quieres documentar cada paso.
const raw = ToonFactory.from(`
datos[4]{valor,estado}:
100,activo
200,inactivo
150,activo
300,activo
`);
// Pipeline con nombres descriptivos
const filtered = raw
.filter(r => r.estado === 'activo')
.setName('datos_activos');
const normalized = filtered
.map(r => ({ ...r, valor_norm: r.valor / 100 }))
.setName('datos_normalizados');
console.log(filtered.getName()); // "datos_activos"
console.log(normalized.getName()); // "datos_normalizados"
// Útil al exportar
const toonStr = normalized.toToon();
// Incluye el nombre "datos_normalizados" en el formato TOON
📈 ToonJS Ahora Tiene 64 Métodos
Con estos 4 nuevos métodos, ToonJS alcanza los 64 métodos optimizados, cubriendo:
- 🔍 Búsqueda y Filtrado: find, findAll, findIndex, filter, where, search
- 📊 Agregación: count, countBy, sum, avg, min, max, stats
- 📈 Estadísticas Avanzadas: correlation, covariance, stdDev, variance
- ⏱️ Series Temporales: rolling, lag, lead, diff, pctChange, cumsum
- 🔄 Transformaciones: map, reduce, sortBy, groupBy, pivot, transpose
- 🧮 Operaciones Matriciales: toMatrix, fromMatrix, dotProduct, normalize
- 💾 Exportación: toToon, toCSV, toJSON, toTable, toMarkdown
- 🎯 Utilidades: getName, setName, clone, distinct, unique
🚀 Instalación
Actualiza a la última versión:
npm install @cescofors/toonjs@latest
🔗 Más Información
¿Qué método nuevo te resulta más útil? Cuéntanos en GitHub!