Back to Freecodecamp

Sort using a custom comparator

curriculum/challenges/english/blocks/rosetta-code-challenges/5a23c84252665b21eecc8016.md

latest2.2 KB
Original Source

--description--

Write a function to sort an array (or list) of strings in order of descending length, and in ascending lexicographic order for strings of equal length.

--hints--

lengthSorter should be a function.

js
assert(typeof lengthSorter == 'function');

lengthSorter(["Here", "are", "some", "sample", "strings", "to", "be", "sorted"]) should return an array.

js
assert(
  Array.isArray(
    lengthSorter([
      'Here',
      'are',
      'some',
      'sample',
      'strings',
      'to',
      'be',
      'sorted'
    ])
  )
);

lengthSorter(["Here", "are", "some", "sample", "strings", "to", "be", "sorted"]) should return ["strings", "sample", "sorted", "Here", "some", "are", "be", "to"].

js
assert.deepEqual(
  lengthSorter([
    'Here',
    'are',
    'some',
    'sample',
    'strings',
    'to',
    'be',
    'sorted'
  ]),
  ['strings', 'sample', 'sorted', 'Here', 'some', 'are', 'be', 'to']
);

lengthSorter(["I", "hope", "your", "day", "is", "going", "good", "?"]) should return ["going", "good", "hope", "your", "day", "is", "?","I"].

js
assert.deepEqual(
  lengthSorter(['I', 'hope', 'your', 'day', 'is', 'going', 'good', '?']),
  ['going', 'good', 'hope', 'your', 'day', 'is', '?', 'I']
);

lengthSorter(["Mine", "is", "going", "great"]) should return ["going", "great", "Mine", "is"].

js
assert.deepEqual(lengthSorter(['Mine', 'is', 'going', 'great']), [
  'going',
  'great',
  'Mine',
  'is'
]);

lengthSorter(["Have", "fun", "sorting", "!!"]) should return ["sorting", "Have", "fun", "!!"].

js
assert.deepEqual(lengthSorter(['Have', 'fun', 'sorting', '!!']), [
  'sorting',
  'Have',
  'fun',
  '!!'
]);

lengthSorter(["Everything", "is", "good", "!!"]) should return ["Everything", "good", "!!", "is"].

js
assert.deepEqual(lengthSorter(['Everything', 'is', 'good', '!!']), [
  'Everything',
  'good',
  '!!',
  'is'
]);

--seed--

--seed-contents--

js
function lengthSorter(arr) {

}

--solutions--

js
function lengthSorter(arr) {
  arr.sort(function(a, b) {
    var result = b.length - a.length;
    if (result == 0) result = a.localeCompare(b);
    return result;
  });
  return arr;
}