If an element is out of order, remove it from the array.

An example in everyone’s (least) favorite language:

const americanSort = (list, compare) => list.reduce((acc, cur) => { const lastElement = acc.length > 0 ? acc[acc.length - 1] : null; return lastElement ? compare(lastElement, cur) < 1 ? [...acc, cur] : acc : [cur]; }, []);

console.log(americanSort([5, 2, 6, 5, 20, 10, 40], (a, b) => a - b)) outputs Array(4) [ 5, 6, 20, 40 ]

  • Ephera
    link
    11 year ago

    Yeah, I really don’t get that one. I code in multiple languages where one could use anonymous functions like that, but in all of those languages, it’s universally agreed upon that you basically always use named functions, unless you’re directly passing it as a parameter.

    My best guess for this being a common pattern in JS is that people have less strong feelings about code readability and are often untrained, so may just develop these weird habits without outside feedback…