gpt4 book ai didi

Javascript Array sort() 无法正确排序字符串数组

转载 作者:行者123 更新时间:2023-12-03 12:35:40 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to perform case-insensitive sorting array of string in JavaScript?

(15 个回答)


3年前关闭。




我有以下 JavaScript 代码:

   const ary = ["Kevin", "brandy", "Andrew"];
const nary = ary.sort();
console.log(nary);

我预计上述代码的输出是 ["Andrew","brandy", "Kevin"]即根据单词的字典顺序。

但是在控制台中我得到了输出:
    ["Andrew","Kevin","brandy"]

当我切换 b"brandy"转大写 B ,然后再次运行代码,
     const ary = ["Kevin", "Brandy", "Andrew"];
const nary = ary.sort();
console.log(nary);

输出如预期的那样:
["Andrew","Brandy","Kevin"]
即根据单词的字典顺序。

这意味着排序优先于首字母为大写的单词,然后是小写首字母的单词。

我的问题是:
  • 为什么在 JavaScript 中会发生这种情况?
  • 如何对字符串数组进行排序 ["Kevin", "brandy", "Andrew"]使用 sort() 根据字典的单词排序功能?
  • Input code:

    const ary = ["Kevin", "brandy", "Andrew"];
    const nary = ary.sort();
    console.log(nary);

    Console Output:
    ["Andrew","Kevin","brandy"]

    I want the Output as:

    ["Andrew","brandy", "Kevin"]

    最佳答案

    这是因为当没有提供回调函数时,元素在转换为 UTF-16 代码单元后进行排序。在您的情况下,可能是 Kelvin 的 utf 转换字符串的原因在 brandy 之前所以它是按这个顺序排序的。

    使用localeCompare

    const ary = ["Kevin", "brandy", "Andrew"];
    const nary = ary.sort(function(a, b) {
    return a.localeCompare(b)

    });
    console.log(nary);

    关于Javascript Array sort() 无法正确排序字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54249561/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com