Soy bastante nuevo en la codificación y estoy practicando la manipulación de matrices. Básicamente, estoy tratando de organizar esta matriz:
const sequence = ["abc", "abcd", "bca", "bdc", "cbd", "bdc", "acb"];a algo como esto:
[[ 'abc', 'bca', 'acb'], ['bdc', 'cbd', 'bdc'], ['abcd']]Hasta ahora, esto es lo que tengo:
const sequence = ["abc", "abcd", "bca", "bdc", "cbd", "bdc", "acb"]; let finalSequence = []; let sequence2 = []; let sequence3 = []; let sequence4 = []; sequence.forEach(element => { for (const elem of element ) { sequence2 = sequence.filter(e => e.includes(elem) && e.length === element.length) sequence3 = sequence.filter(e => !e.includes(elem)) sequence4 = sequence.filter(e => e.includes(elem) && e.length !== element.length) return sequence2, sequence3, sequence4 } }) console.log(sequence2) console.log(sequence3) console.log(sequence4) finalSequence.push(sequence2, sequence3, sequence4)Esto solo funciona para la matriz provista, pero una vez que empiezo a probarlo y jugar un poco más con él, se vuelve evidente que esta no es la forma correcta de hacerlo.
Realmente agradecería cualquier sugerencia o aporte sobre cómo abordar este problema. ¡Muchas gracias!
Puede normalizar cada cadena para obtener letras ordenadas y usar esto como grupo para todas las cadenas similares.
const sequence = ["abc", "abcd", "bca", "bdc", "cbd", "bdc", "acb"], grouped = Object.values(sequence.reduce((r, s) => { const key = Array.from(s).sort().join(''); (r[key] ??= []).push(s); return r; }, {})); console.log(grouped);