Ich habe dieses Dienstprogramm bei einer Vielzahl von Projekten eingesetzt und es funktioniert hervorragend. Es ist auch sehr modular:
- Pass die Name des Schlüssels zum Sortieren nach
- Wählen Sie, ob die Sortierung aufsteigend o absteigend
sortArrayOfObjsByKeyUtil.js
// Sort array of objects by key
// ------------------------------------------------------------
const sortArrayOfObjsByKey = (array, key, ascdesc) =>
array.sort((a, b) => {
const x = a[key];
const y = b[key];
if (ascdesc === 'asc') {
return x < y ? -1 : x > y ? 1 : 0;
}
if (ascdesc === 'desc') {
return x > y ? -1 : x < y ? 1 : 0;
}
return null;
});
sortArrayOfObjsByKeyUtil.test.js
import sortArrayOfObjsByKey from './sortArrayOfObjsByKeyUtil';
const unsortedArray = [
{
_id: '3df55221-ce5c-4147-8e14-32effede6133',
title: 'Netlife Design',
address: {
PostalAddress: {
streetAddress: 'Youngstorget 3',
addressLocality: 'Oslo',
addressRegion: null,
postalCode: '0181',
addressCountry: 'Norway',
},
},
geopoint: { lat: 59.914322, lng: 10.749272 },
},
{
_id: 'cd00459f-3755-49f1-8847-66591ef935b2',
title: 'Home',
address: {
PostalAddress: {
streetAddress: 'Stockfleths gate 58A',
addressLocality: 'Oslo',
addressRegion: null,
postalCode: '0461',
addressCountry: 'Norway',
},
},
geopoint: { lat: 59.937316, lng: 10.751862 },
},
];
const sortedArray = [
{
_id: 'cd00459f-3755-49f1-8847-66591ef935b2',
title: 'Home',
address: {
PostalAddress: {
streetAddress: 'Stockfleths gate 58A',
addressLocality: 'Oslo',
addressRegion: null,
postalCode: '0461',
addressCountry: 'Norway',
},
},
geopoint: { lat: 59.937316, lng: 10.751862 },
},
{
_id: '3df55221-ce5c-4147-8e14-32effede6133',
title: 'Netlife Design',
address: {
PostalAddress: {
streetAddress: 'Youngstorget 3',
addressLocality: 'Oslo',
addressRegion: null,
postalCode: '0181',
addressCountry: 'Norway',
},
},
geopoint: { lat: 59.914322, lng: 10.749272 },
},
];
describe('sortArrayOfObjsByKey', () => {
it(`sort array by 'title' key, ascending`, () => {
const testInput = sortArrayOfObjsByKey(unsortedArray, 'title', 'asc');
const testOutput = sortedArray;
expect(testInput).toEqual(testOutput);
});
});
8 Stimmen
Mit diesem Skript können Sie genau das tun, es sei denn, Sie möchten Ihre eigene Vergleichsfunktion oder Ihren eigenen Sortierer schreiben: thomasfrank.se/sortierung_der-dinge.html
0 Stimmen
Der schnellste Weg ist die Verwendung der isomorphen sort-array Modul, das nativ sowohl im Browser als auch im Node funktioniert und jede Art von Eingabe, berechnete Felder und benutzerdefinierte Sortierreihenfolgen unterstützt.
0 Stimmen
Function compare( a, b ) { if ( a.last_nom < b.last_nom ){ return -1; } if ( a.last_nom > b.last_nom ){ return 1; } return 0; } objs.sort( compare );
0 Stimmen
Objs.sort((a,b) => (a.last_nom > b.last_nom) ? 1 : ((b.letzte_Nom > a.letzte_Nom) ? -1 : 0))
0 Stimmen
@artem Bitte reichen Sie Ihre eigene Antwort ein.
2 Stimmen
@RobertTalada das ist meine Antwort stackoverflow.com/a/67021585/7012450
0 Stimmen
Das Muster für Sortierung nach Eigenschaften lexikographisch ist
objs.sort((a, b) => a.last_nom.localeCompare(b.last_nom))
. Zum Sortieren numerisch verwendena.prop - b.prop
. Um absteigend statt aufsteigend zu sortieren, negieren Sie den Rückgabewert (z. B.b.last_nom.localeCompare(a.last_nom)
anstelle vona.last_nom.localeCompare(b.last_nom)
). Zum Sortieren nach mehrere Objekte , Kette andere Sorten mit||
z.B.b.someNumber - a.someNumber || a.someString.localeCompare(b.someString)
.2 Stimmen
Groß-/Kleinschreibung beachten oder nicht beachten?