JSFiddle - React, Tailwind, and code Playground

by ttamminen

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.7.6/immutable.min.js"></script>

JavaScript

function sortByNameTakeAllFirst(a, b) {
  function getName(item) {
    var name = item.get('name');
    if (!name) {
      return '{no name}';
    }
    return name.toLowerCase();
  }

  var nameA = getName(a);
  var nameB = getName(b);

  // all should be first then alphabetically
  if (nameA === 'all') {
    return -1;
  }

  return nameA.localeCompare(nameB);
};

var items = Immutable.fromJS([
  {
    "name": "M&A"
  },
  {
    "name": "License"
  },
  {
    "name": "Purchase"
  },
  {
    "name": "All"
  },
  {
    "name": "Distribution"
  },
  {
    "name": "Agency"
  },
  {
    "name": "R&D"
  },
  {
    "name": "Sales"
  },
  {
    "name": "Consultancy"
  },
  {
    "name": "Other"
  },
  {
    "name": "Subcontracting"
  },
  {
    "name": "Service"
  },
  {
    "name": "NDA"
  },
  {
    "name": "ICT"
  },
  {
    "name": "Co-operation"
  },
  {
    "name": "Lease/Rental"
  }
]);

console.log(items.sort(sortByNameTakeAllFirst).toJS())