Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用函数按字母顺序对字符串排序_Javascript_Sorting - Fatal编程技术网

Javascript 使用函数按字母顺序对字符串排序

Javascript 使用函数按字母顺序对字符串排序,javascript,sorting,Javascript,Sorting,假设给你一个字符串,你必须用一个函数按字母顺序对该字符串进行排序。例如: sortAlphabets( 'drpoklj' ); //=> returns 'djklopr' 执行此操作的最佳方法是什么?您可以使用数组函数: var sortAlphabets = function(text) { return text.split('').sort().join(''); }; 步骤 将字符串转换为数组 排序数组 将数组转换回字符串 较新的浏览器支持,这使得排序utf8编码字

假设给你一个字符串,你必须用一个函数按字母顺序对该字符串进行排序。例如:

sortAlphabets( 'drpoklj' ); //=> returns 'djklopr'
执行此操作的最佳方法是什么?

您可以使用数组函数:

var sortAlphabets = function(text) {
    return text.split('').sort().join('');
};
步骤

  • 字符串
    转换为
    数组
  • 排序
    数组
  • 数组
    转换回
    字符串
  • 较新的浏览器支持,这使得排序
    utf8
    编码字符串非常简单。请注意,不同的语言可能具有不同的字符顺序。有关的更多信息

    函数sortAlphabet(str){
    return[…str].sort((a,b)=>a.localeCompare(b)).join(“”);
    }
    
    console.log(sortAlphabet(“drpoklj”);//日志:“djklopr”
    如前面的答案所示,您可以将字符串转换为单个字符串数组,对其进行排序,然后将其重新组合为字符串但是使用
    拆分
    并不是第一步的最佳实践方式,因为JavaScript字符串是一系列UTF-16代码单元,允许使用无效的代理项对,并且
    拆分(“”
    将代理项对拆分为各自的代码单元,可能会将它们分开,从而破坏代码点(松散地说:字符)它们应该成对出现。因此,如果字符串中有表情符号(例如),或者非西方脚本中的数十万个字符中的任何一个,这些字符都可能被破坏

    在ES5和早期版本中,正确拆分字符串需要检测和处理代理项对,以确保它们保持在一起,这有点麻烦,需要检查
    charCodeAt
    的特定值范围

    对于ES2015+,这非常简单:您只需使用字符串的迭代器,它被定义为提供字符串中的每个代码点,无论是单个代码单元还是两个。要获得代码点数组,您可以通过扩展符号(
    […str]
    )或
    数组.from
    数组.from(str)
    )使用迭代器

    因此,利用这一点,我们得到:

    function sortAlphabets(str) {
        return [...str].sort((a, b) => a.localeCompare(b)).join("");
    }
    
    实例:

    //使用迭代器
    功能分类表(str){
    return[…str].sort((a,b)=>a.localeCompare(b)).join(“”);
    }
    //使用拆分(“”)
    函数sortalphabetusingsplit(str){
    返回str.split(“”).sort((a,b)=>a.localeCompare(b)).join(“”);
    }
    
    const str=“我自己不会这么做。我会去Stackoverflow找人帮我做。我自己试过,但找不到我想要的。这个答案只是增加了我的经验。这个解决方案的空间和时间复杂性是什么?@kdizzle这些方法都是O(N)请注意,返回的值本身是一个数组,而它应该是一个字符串,因此需要添加
    .join(“”
    @yl2015很好!我已经相应地更新了答案