使用Javascript按字母顺序对字符串进行排序

4

我在完成一个比较简单的任务时遇到了一些问题。我需要对一个字符串中的字符进行排序,并返回排好序的字符串(使用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 += - StudioTime
请注意,默认情况下,.sort() 不按字母顺序进行排序,而是根据每个字符的 Unicode 码点值进行排序。如果你只有小写或大写字母,那么这将变成按字母顺序排序,但在你的情况下不是这样。(所以 "apple""Zebra" 之后,但在 "zebra" 之前。) - nnnnnn
可能是重复的问题 https://dev59.com/P10Z5IYBdhLWcg3w6j6_ - martinho
2个回答

16

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('');

5
const sorted = str.split('').sort().join('')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接