Básicamente, tengo dos matrices, una es los tipos de archivos y la otra son los nombres reales de los archivos, por lo tanto, necesito verificar cada uno de los nombres de los archivos y buscar una cadena específica, para luego agruparlos, pero tiene algunos reglas, como, el grupo debe tener el nombre de orden ASC y el general debe tener los que no coinciden con un tipo y los que tienen el tipo en él, para los archivos de las nuevas versiones. (Necesito hacer esto con Javascript puro) Ejemplos:
types: ["general","picture","document","annotation"] files: [ {name:"-t_picture_t-my_vacation.jpg"}, {name:"-t_document_t-my_curriculum.pdf"}, {name:"my_favorite_music.mp3"}, {name:"my_dance_video.mp4"}, {name:"-t_annotation_t-dont_forget.txt"}, ]Los resultados esperados son algo como:
[ {name:"my_dance_video.mp4"}, {name:"my_favorite_music.mp3"}, {name:"-t_picture_t-my_vacation.jpg"}, {name:"-t_document_t-my_curriculum.pdf"}, {name:"-t_annotation_t-dont_forget.txt"}, ]Cualquier pregunta sobre, solo envíe un mensaje.
Bueno... un algoritmo simple será algo como esto
const types = ["picture","document","annotation", "general"] const files = [ {name:"-t_picture_t-my_vacation.jpg"}, {name:"-t_document_t-my_curriculum.pdf"}, {name:"my_favorite_music.mp3"}, {name:"my_dance_video.mp4"}, {name:"-t_annotation_t-dont_forget.txt"}, ] const result = [] const matches = {} for (const file of files) { for (const type of types) { if (file.name.includes(type)) { result.push(file) matches[file.name] = true } else if (type == 'general' && !matches[file.name]) { result.unshift(file) } } } console.log(result) La desventaja es que debemos esperar con la categoría general hasta el final porque solo cuando completamos la clasificación podemos agregar el resto de elementos sin duplicación.
Espero que te ayude a poner en marcha tu solución. Disfruta 😎