22

I would like to sort immutable.js orderedList by property name,

data.map(x => x.get("name")) returns the string, I want to sort my map by name in alphabetical order.

How to do that? I tried:

return data.sortBy((val) => {
    if (dir === "up") {
      return val.get("name");
    } else {
      return - val.get("name");
    }
  });
Matt Seymour
  • 8,880
  • 7
  • 60
  • 101
lipenco
  • 1,358
  • 5
  • 16
  • 30
  • 8
    In case someone ever ends up here looking for a way to sort a list or a map by key, here's how: `mapOrList.sortBy((val, key) => key)` – SudoPlz Dec 13 '16 at 14:48

1 Answers1

37
var fiends = Immutable.fromJS([{name: 'Squirrel'}, {name: 'Cat'}, {name: 'Raccoon'}]);
var sorted = fiends.sortBy(
  (f) => f.get('name')
);
sorted.map(x => x.get('name')).toJS();  // ["Cat", "Raccoon", "Squirrel"]

With localCompare:

fiends.sort(
  (a, b) => a.get('name').localeCompare(b.get('name'))
);
Luqmaan
  • 2,052
  • 27
  • 34