在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 字符串进行排序?

在C ++中按非ASCII顺序的第一个字母对字符串向量进行排序

在数据框python的每一行中按字母顺序对单词进行排序

在mysql中按字母顺序对全名进行排序

如何在 Laravel 中按字母顺序对记录进行排序

在 C# 中按字母顺序对 XML 文档进行排序