ho controllato this answer ma per ottenere lo stesso risultato, che è quello di ottenere l'ordinamento case-insensitive, ho bisogno di usare orderBy
invece di sortBy
dal dà la possibilità di specificare il tipo di ordinamento.Lodash: come fare un ordinamento senza distinzione tra maiuscole e minuscole di una raccolta utilizzando orderBy?
L'unico modo che ho trovato per raggiungerlo è stato quello di creare un clonato serie "middle" mappato in minuscolo la name
:
const users = [
{ name: 'A', age: 48 },
{ name: 'B', age: 34 },
{ name: 'b', age: 40 },
{ name: 'a', age: 36 }
];
let lowerCaseUsers = _.clone(users);
lowerCaseUsers = lowerCaseUsers.map((user) => {
user.name = user.name.toLowerCase();
return user;
});
const sortedUsers = _.orderBy(lowerCaseUsers, ['name'], ['desc']);
console.log(sortedUsers);
Questo sembra veramente costoso, e sarà ancora più complesso con più cernite e nomi di proprietà dinamiche.
Esiste un'idea migliore?
Ecco un Plunker: https://plnkr.co/edit/i1ywyxjFctuNfHtPTcgG
Questo potrebbe non riuscire sui browser più vecchi. – steampowered
Se si intende che questo genererà un errore di sintassi nel browser che non supporta ES6, quindi sì, ovviamente. Lascerò la conversione della funzione di freccia in una funzione "normale" (e 'const' a' var') come esercizio per il lettore. –
Funziona con nomi di proprietà dinamici? – TheCaptan