如何在JavaScript中对字符串形式的姓名列表进行字母排序?
正确实现方法
要把逗号分隔的字符串转成按字母排序的数组,需要三个关键步骤:
- 拆分字符串为数组:用
split(',')把字符串按逗号分割成包含各个名字的数组 - 对数组进行排序:调用数组的
sort()方法,配合localeCompare()实现自然语言的字母排序 - (可选)格式化输出:用
JSON.stringify()带参数美化输出格式,和示例一致
完整代码示例
let friends = 'Moe,Larry,Curly,Jane,Emma,Elizabeth,Elinor,Mary,Darcy,Grey,Lydia,Harriet'; // 拆分字符串并按字母排序 let sortedFriends = friends.split(',').sort((a, b) => a.localeCompare(b)); // 输出带缩进的格式化结果 console.log(JSON.stringify(sortedFriends, null, 2));
代码解释
split(','):将原始字符串拆分为['Moe', 'Larry', ...]形式的名字数组sort((a, b) => a.localeCompare(b)):localeCompare()会按照自然语言的字母顺序排序,默认不区分大小写,能保证Emma、Elizabeth这类名字按正确顺序排列JSON.stringify(sortedFriends, null, 2):第三个参数2指定用2个空格缩进,输出和示例完全一致的换行格式
之前方法无效的原因
friends.sort():sort()是数组专属方法,字符串没有该方法,直接调用无效果Object.values(friends):字符串会被当作类数组对象处理,该方法会把每个字符单独提取出来,所以得到的是单个字母的数组,不是完整的名字
内容的提问来源于stack exchange,提问作者msc1
相关产品推荐
相关产品推荐

