react - Underscore.js Case Insensitive Sorting
underscore lodash (2)
El nombre por el que se puede ordenar puede ser el nombre del campo O una función, así que pase una función que realice una conversión en minúscula.
var sorted = _.sortBy(array, function (i) { return i.name.toLowerCase(); });
debe hacer el truco
Tener algunos problemas leves al intentar subrayar.js para hacer una clasificación que no distinga mayúsculas y minúsculas Tengo una matriz de objetos y me gustaría poder ordenar por nombre de propiedad.
Usando el método de acceso directo sortBy
iteratee también puede ser el nombre de la cadena de la propiedad a ordenar (por ejemplo, longitud).
Array para ser ordenado:
var array = [{ name: ''test_1234'', description: ''zzaaa bb cc''},
{ name: ''zz1111'', description: ''ZAAbbbcc''},
{ name: ''TEST'', description: ''4422''},
{ name: ''1a2929'', description: ''abcdef''},
{ name: ''abc'', description: ''Full description''},
{ name: ''GGGGH'', description: ''123456''}];
Ordenando usando este método, sortProperty = ''nombre'', el resultado se coloca en mayúsculas antes de minúsculas.
var sorted = _.sortBy(array, sortProperty);
1a2929 - abcdef
GGGGH - 123456
TEST - 4422
abc - Full description
test_1234 - zzaaa bb cc
zz1111 - ZAAbbbcc
Supongo que esto tiene que ver con la distinción entre mayúsculas y minúsculas, pero no puedo averiguar cómo cambiar los nombres de la matriz a minúsculas y comparar de esa manera.
Cualquier ayuda es muy apreciada.
Edición: Como se señaló, usted pasa un nombre o una función, por lo que solo ajusté la función para devolver el campo por el que se ordenará: http://jsfiddle.net/rjaqp1vg/5/
No uses _.sortBy para esto. La forma correcta de ordenar cadenas alfabéticamente es usar localeCompare. Aquí hay un ejemplo en Javascript puro:
[''Z'', ''A'',''z'',''á'', ''V''].sort(function(a, b){
return a.localeCompare(b, undefined /* Ignore language */, { sensitivity: ''base'' })
});