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 ]

  • @kevincox@lemmy.ml
    link
    fedilink
    4
    edit-2
    1 year ago

    Off-topic: Why is const americanSort = (list, compare) => { ... } such a common pattern these days? Isn’t it simpler to just do function americanSort(list, compare) { ... }

    • @CannotSleep420OP
      link
      11 year ago

      It makes me feel cool and I’m already used to doing it, so doing it the function way becomes slower from being so used to doing it the other way.

    • Ephera
      link
      fedilink
      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…

  • Muad'DibberA
    link
    31 year ago

    I feel like the americanSort would be to remove all the numbers and replace them with the same number repeating forever.

    americanSort([55, 331, 26, 89]) -> [1, 1, 1, 1, 1, 1, 1, ...]