【发布时间】:2020-01-06 19:59:10
【问题描述】:
我想了解 sort() 方法在 JavaScript 中的工作原理,我知道 sort 有一个默认的比较函数,但我想传递一个函数并了解它如何处理该函数。
我想按字母顺序对以下数组["a", "d", "c", "a", "z", "g"] 进行排序,但是当我使用方法arr.sort((a,b) => a>b); 时返回相同的数组而不进行排序。
拜托,任何人都可以向我解释一下。
我正在学习 JavaScript 并试图理解数组中的方法,例如 map()、reduce() 和 filter(),但我陷入了 sort() 方法中。
let arr = ["a", "d", "c", "a", "z", "g"];
console.log(arr.sort((a,b) => a>b));
结果是["a", "d", "c", "a", "z", "g"],但我想要["a", "a", "c", "d", "g", "z"]。
而且我知道如果我使用不带参数的 sort() 方法,算法会对它进行排序,但我想了解为什么它不能使用参数。
【问题讨论】:
-
arr.sort((a,b) => a.localeCompare(b)); -
该方法期望有差异而不是布尔值,但您可以不带参数调用该方法:
console.log(arr.sort()); -
Gracias por sus comentarios, con la función localeCompare() tuve unos problemas con mi objetivo, ya que 'b'.localeCompare('A') me devuelve 1, y estaba buscando que se relacionara a los ASCII, lo que mejor me funcionó fue esto: arr.sort( (b,a) => a.charCodeAt() - b.charCodeAt() )
标签: javascript arrays sorting