DEV Community

Discussion on: Keeping Your Code Simple

layzee profile image
Lars Gyrup Brink Nielsen • Edited

If you turn that into a reusable function, you will be mutating the array parameter, i.e. sorting it in-place. You would have to clone the array before sorting it to prevent side effects from passing an array into the function.

Also, you made a mistake. You compare str2.length to str2.length (both are str2).

Use this instead

function longest(xs) {
  // Shallow clone
  xs = [...xs];
  xs.sort((a, b) => b.length - a.length);

  return xs[0];

Or with reusable functions

function compareLength(a, b) {
  return b.length - a.length;

function head([first,]) {
  return first;

function longest(xs) {
  xs = shallowClone(xs);

  return head(xs);

function shallowClone(xs) {
  return [...xs];
lexlohr profile image
Alex Lohr

You're right.