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很好!我已经相应地更新了答案