【问题标题】:Sorting a string alphabetically in Javascript在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" 之前。)

标签: javascript sorting


【解决方案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('');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-23
      • 2018-11-20
      • 2021-05-08
      • 2017-10-04
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多