Mnemonic Device of Array.sort

JavaScript

在 JavaScript 中进行数组的排序,需要写一个比较函数,通过函数返回的结果来判断元素的顺序:如果返回的是负数,那么第一个参数在前;如果返回的是正数,那么第一个参数在后;如果返回 0,则表示两个值相等。(MDN 文档见这里

如果觉得上面提到的这种行为不容易记忆的话,可以考虑下面的这种“直观”的写法:

const list = [8, 6, 7, 5, 3, 0, 9, 2, 4, 1];

// Ascending: 最终的数组排序结果类似从 a 排序到 z
list.sort((a, z) => a - z);

// Descending: 最终的数组排序结果类似从 z 排序到 a
list.sort((a, z) => z - a);

通过 a - z 这样的“形式”来表达从 a 排序到 z(即从小到大排序);z - a 来表达从 z 排序到 a(即从大到小排序)。最终的效果非常直观。Credit: David K. 🎹

其他类似的“直观”写法,比如说:

let i = 3;
while (i --> 0) {
  console.log(i);
}

上述表达式中,通过 --> 来创建一个类似“趋向于”的表达方式(当然,其实常见的写法应该是 i-- > 0)。

这样的写法可以在语法允许的范围内创造一些更“直观”的表达方式,至于好坏,可能见仁见智。