在Javascript中按字母顺序对字符串进行排序
Posted
技术标签:
【中文标题】在Javascript中按字母顺序对字符串进行排序【英文标题】:Sorting a string alphabetically in Javascript 【发布时间】:2016-12-05 12:25:16 【问题描述】:我在一个相对简单的任务中遇到了一些问题。我必须对字符串的字符进行排序并返回排序后的字符串(在 javascript 中)。在谷歌搜索答案后,我找到了解决方案,但由于某种原因,这些方法没有返回我预期的输出。
var str = "Something";
var chars = [];
for (var i = 0; i < str.length; i++)
chars.push(str.charAt(i));
chars.sort().join("");
console.log(chars);
我收到的输出是这样的:
["S", "e", "g", "h", "i", "m", "n", "o", "t"]
1.) 尽管使用了 .join() 方法,但字符仍然以逗号分隔。还尝试使用 .replace() 方法,但这让我想到了第二个问题。
2.) typeof chars 仍然是一个对象,尽管 .join() 应该返回一个字符串。我也尝试使用 .toString() 方法,但输出的类型仍然是一个对象。
【问题讨论】:
chars.push()
推入数组,因此应使用逗号 - 请改用 chars +=
请注意,默认情况下.sort()
不按字母顺序排序,它根据每个字符的 Unicode 代码点值进行排序。如果您全部使用小写或全部大写字母,则以字母顺序结束,但在您的情况下,您没有。 (所以"apple"
在"Zebra"
之后,但在"zebra"
之前。)
***.com/questions/30912663/… 的可能重复项
【参考方案1】:
const sorted = str.split('').sort().join('')
【讨论】:
【参考方案2】:join()
不会修改数组,而是返回一个您当前未使用的新对象。所以你的代码应该是这样的:
var str = "Something";
var chars = [];
for (var i = 0; i < str.length; i++)
chars.push(str.charAt(i));
chars = chars.sort().join("");
console.log(chars);
但是,您可以在一个班轮中执行此操作:
let chars = str.split('').sort().join('');
【讨论】:
以上是关于在Javascript中按字母顺序对字符串进行排序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 中按字母顺序对 JSON 字符串进行排序?