typescript - Sortera en karta efter värde i javascript och behåll ett fältindex överst


Detta kanske är en mycket enkel fråga på detta forum men jag kunde inte hitta svaret eftersom jag är nybörjare på JavaScript. Jag har följande kod i JavaScript -

Let map = new Map<String,String>
map.set('0', select)
map.set('1', "foo");
map.set('2', "bar");
map.set('3', "baz");

Jag vill sortera denna karta baserat på värde. Men index 0 ska vara överst och andra ska sorteras. Så den slutliga utskriften ska vara som nedan -

[{'0':'Select'},{'2':'bar'}, {'3':'baz'}, {'1': 'foo'}];

Kan du snälla hjälpa mig med detta?

Svar #1

Du kan få Map#entries från kartan och sortera arrayen.

För att flytta ett visst värde till toppen (eller behålla detta värde överst), behöver du ett returvärde för Array#sort som speglar den önskade ordningen. I det här fallet tas a från villkoren och om det är falsy, som noll, tas den andra delen efter det logiska ELLER ||.

let map = new Map();

map.set('0', "Select");
map.set('1', "foo");
map.set('2', "bar");
map.set('3', "baz");

result = Array.from(map).sort(([, a], [, b]) =>
    (b === 'Select') - (a === 'Select') || a.localeCompare(b)
);

console.log(result);