JavaScript 按字母顺序排序不对所有值进行排序

标签 javascript arrays sorting

我正在尝试在 JavaScript 中按字母顺序对数组进行排序。我减小了数组的大小以进行测试和可读性(原始数组并没有那么大,但仍然遇到相同的问题)。问题是输出在列表顶部有一些不按顺序排列的值。我尝试在几个不同的循环中多次运行排序,但似乎仍然无法正确排序。我环顾四周,大多数答案都是关于基本语法的。我已经对数字和其他类似的列表进行了排序,所以我很困惑。

提前致谢。

这是我的代码:

var miniArr = ['leatherwood', 'sacramento', 'ackerman', 'alma', 'anderson', 'ben wheeler', 'atlanta', 'bakersfield', 'albuquerque', 'baker', 'aspen', 'anchorage', 'antioch', 'benton', 'cedar rapids', 'el cajon', 'boca raton', 'falcon', 'crestview', 'ceres', 'deep run', 'fresno', 'eugene', 'fayetteville', 'fairfield', 'fort myers', 'butler', 'eunice', 'cary', 'cincinnati', 'buffalo', 'freedom (watsonville)', 'francis creek', 'boulder', 'fort worth', 'edgartown', 'bonita', 'glen spey', 'grants pass', 'cleveland', 'clinton', 'colonia', 'chula vista', 'gulf breeze', 'lakeland', 'la mesa', 'jasper', 'haverhill', 'ingleside (canada)', 'joplin', 'hancock', 'pasadena', 'loveland', 'london (canada)', 'lompoc', 'lemon grove', 'park city']

var sorted = [];
var sorted2 = []
for (var x = 0; x < 100; x++) {
  sorted = miniArr.sort((a, b) => a > b);
}
for (var x = 0; x < 100; x++) {
  sorted2 = sorted.sort((a, b) => a > b);
}

console.log(sorted);
console.log(sorted2);

最佳答案

对于字符串,请使用localeCompare():

var miniArr = ['leatherwood', 'sacramento', 'ackerman', 'alma', 'anderson', 'ben wheeler', 'atlanta', 'bakersfield', 'albuquerque', 'baker', 'aspen', 'anchorage', 'antioch', 'benton', 'cedar rapids', 'el cajon', 'boca raton', 'falcon', 'crestview', 'ceres', 'deep run', 'fresno', 'eugene', 'fayetteville', 'fairfield', 'fort myers', 'butler', 'eunice', 'cary', 'cincinnati', 'buffalo', 'freedom (watsonville)', 'francis creek', 'boulder', 'fort worth', 'edgartown', 'bonita', 'glen spey', 'grants pass', 'cleveland', 'clinton', 'colonia', 'chula vista', 'gulf breeze', 'lakeland', 'la mesa', 'jasper', 'haverhill', 'ingleside (canada)', 'joplin', 'hancock', 'pasadena', 'loveland', 'london (canada)', 'lompoc', 'lemon grove', 'park city']

var sorted = [];
var sorted2 = []
for (var x = 0; x < 100; x++) {
  sorted = miniArr.sort((a, b) => a.localeCompare(b));
}

console.log(sorted);

关于JavaScript 按字母顺序排序不对所有值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54206990/

相关文章:

javascript - 无法使用streams/highland.js从结果中从mongodb获取数据

c++ - 排序并跟踪元素

javascript - 在 JavaScript 中转换日期在 Firefox 中不起作用

java - 从类到 B 类调用数组

Javascript - array.map 返回多个数组,为什么?

没有正则表达式的 Piglatin 程序的 PHP 脚本——如何考虑以元音字母 "th"或 "sh"开头的单词?

javascript - 按属性值对对象数组进行排序

c - 这段代码有什么错误?(C - 文件处理)

javascript - 让链接执行 2 个操作

javascript - Html + JavaScript + CSV 解析 + Google Charts 帮助哦快乐 xD ...