Estoy usando lodash para ordenar por valor en una función. Está ordenando por valor en este momento. Sin embargo, me gustaría añadir otra condición. Quiero hacer que se ordene primero por esta condición (lo que significa que un archivo será igual a algo), luego se ordenará por valor.
En otras palabras, hay un artículo que tiene el nombre de 'Sally'. Este elemento debe estar primero, y luego el resto de los elementos se ordenan por valor.
He estado investigando mucho sobre esto y no pude encontrar nada en línea. Me pregunto si alguien se ha encontrado alguna vez con este problema. Por favor vea mi código:
const sortByNameThenValue = () => { let result; result = sortBy(name, 'Sally') && sortBy(allowance, 'value').reverse(); }También estaba pensando en encadenarlo, pero no parece funcionar tan bien. Por favor, avíseme si ve algo. ¡Gracias y aprecio!
Puedes hacer esto en lodash:
const sorted = _.sortBy( people, [(person) => person.name !== 'Sally', (person) => person.value] ); sortBy toma una matriz de elementos y una matriz de funciones, y "[ordena] en orden ascendente según los resultados de ejecutar cada elemento en una colección a través de cada iterado "
Aquí también hay un sandbox para demostración.
Ordenar en orden inverso:
const sorted = _.sortBy(people, [ (person) => person.name === "Sally", (person) => person.value ]).reverse();No proporcionó ningún dato de muestra, así que inventé algunas cosas. No es necesario incluir la biblioteca lowdash, ya que la clasificación ya está disponible en Vanilla-JS.
const arr=[{name:"Fred",value:138},{name:"Harry",value:5},{name:"Sally",value:34},{name:"Andy",value:257},{name:"Sue",value:142},{name:"Peggy",value:33},{name:"Frank",value:85}]; function val(o){ return o.value+(o.name==="Sally"?1e50:0) } console.log(arr.sort((a,b)=> val(b)-val(a)));