Con el requisito de que necesito usar Intl.Collator (solo en inglés) para ordenar cadenas que contienen letras y números (en cualquier parte de la cadena). Necesito tenerlos ordenados de tal manera que:
estoy usando esto:
return new Intl.Collator(locale, { caseFirst: 'upper', numeric: true, sensitivity: 'variant' }) .compare(stringA, stringB);Puede ver una explicación del objeto de opciones de Collator aquí: https://reference.codeproject.com/javascript/reference/global_objects/collator
Esto funciona bien cuando los números están al principio de la cadena:
'9elliot' > '12morgan', '54mary' > '54Ralph', '23John' > '23john'Pero me encontré con un caso en el que falla la clasificación y no puedo entender por qué:
console.log(['f1oobar', 'F2oobar'].sort( new Intl.Collator('en', { caseFirst: 'upper', numeric: true, sensitivity: 'variant'}).compare )); // Prints ["f1oobar", "F2oobar"] Necesito que se ordene como ["F2oobar", "f1oobar"] porque la "F" mayúscula debe ir antes de la "f" minúscula.
Probé todas las variantes de caseFirst , numeric y de sensitivity sin cambios en el resultado. Incluso eliminé el numeric y sensitivity sin cambios.
¿Quién puede explicar y/o resolver esto?