Javascript sort()排序不正确

Javascript sort()排序不正确,javascript,Javascript,尝试对数组进行排序时,sort()只切换1个值,并将最大值添加到数组的中间。有人能帮我了解发生了什么事吗? 我得到的结果是: Original Array: [2643832795, 1, "3", 10, 3, 5] New Array: [1, 10, 2643832795, 3, 3, 5] 这是它应该进行的分类。它相应地进行排序,就像对字符串列表进行排序一样 var list=[2643832795,1,3,10,3,5] 编写list.sort()时,它只是按照每个字符的Unicod

尝试对数组进行排序时,sort()只切换1个值,并将最大值添加到数组的中间。有人能帮我了解发生了什么事吗? 我得到的结果是:

Original Array: [2643832795, 1, "3", 10, 3, 5]
New Array: [1, 10, 2643832795, 3, 3, 5]

这是它应该进行的分类。它相应地进行排序,就像对字符串列表进行排序一样

var list=[2643832795,1,3,10,3,5]

编写
list.sort()
时,它只是按照每个字符的Unicode代码点值对字符串列表进行排序

首先是1,然后是2,3,依此类推。所以即使它是2643832795,它也会在3之前出现

如果要将其作为整数进行排序,应提供如下回调:

var list=[2643832795,1,3,10,3,5];
var newList=list.map(i=>parseInt(i))//将列表中的字符串转换为整数
排序((a,b)=>a-b);

log(newList)
它使用字符串的词法比较。您可以使用一个比较函数,强制使用数字和减法进行比较

let startArray=[2643832795,1,3,10,3,5];
函数bigSorting(未排序){
设newArray=[];
未排序的.forEach(el=>{
if(类型(el)=“字符串”)
{newArray.push(parseInt(el))}
else{newArray.push(parseInt(el))}
});
newArray.sort();
log(newArray);
控制台日志(startArray);
console.log(未排序的.sort((x,y)=>x-y))
}
大分类(星光)您非常接近:-)


您将获得字典排序(例如,将对象转换为字符串,并按字典顺序排序),这是Javascript中的默认排序行为:reference

在ES6中,可以使用箭头函数简化此操作:

unsorted.sort((a, b) => a - b);
所以这应该是这样的:

let startArray = [2643832795, 1, "3", 10, 3, 5];

function bigSorting(unsorted) {
    let newArray = [];

    unsorted.forEach(el => { 
        if(typeof(el) == "string") 
        { newArray.push(parseInt(el)) }
        else { newArray.push(parseInt(el)) }
    });

    newArray.sort((a, b) => a - b);

    console.log(startArray);
    console.log(newArray);
}

试试这个,希望对你有帮助

var数字=[2,5,8,7,1,6,10,3,4,9];
var asc=numbers.sort((a,b)=>a-b);
控制台日志(asc);//输出:[1,2,3,4,5,6,7,8,9,10]。数字排序
数字=[2,5,8,7,1,6,10,3,4,9];
var des=数字。排序((a,b)=>b-a);

控制台日志(des);//输出:[10,9,8,7,6,5,4,3,2,1]。无回调的数字降序排序
将所有值视为字符串并对这些字符串进行排序。这是它的标准习惯。谢谢你的这个资源@NinaScholz,它帮助我解决了这个问题!它按字母顺序排序
unsorted.sort((a, b) => a - b);
let startArray = [2643832795, 1, "3", 10, 3, 5];

function bigSorting(unsorted) {
    let newArray = [];

    unsorted.forEach(el => { 
        if(typeof(el) == "string") 
        { newArray.push(parseInt(el)) }
        else { newArray.push(parseInt(el)) }
    });

    newArray.sort((a, b) => a - b);

    console.log(startArray);
    console.log(newArray);
}