Javascript sort()排序不正确
尝试对数组进行排序时,sort()只切换1个值,并将最大值添加到数组的中间。有人能帮我了解发生了什么事吗? 我得到的结果是: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
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);
}