试图从一个只包含整数的数组中获得最大值和最小值似乎比我想象的要难。
var numArray = [140000, 104, 99]; numArray = numArray.sort(); console.log(numArray)
我希望这是99 104 140000。相反,它显示的是104、14万、99。看起来排序是把值当做字符串处理的。
有没有办法让排序函数对整数值进行排序?
试图从一个只包含整数的数组中获得最大值和最小值似乎比我想象的要难。
var numArray = [140000, 104, 99]; numArray = numArray.sort(); console.log(numArray)
我希望这是99 104 140000。相反,它显示的是104、14万、99。看起来排序是把值当做字符串处理的。
有没有办法让排序函数对整数值进行排序?
当前回答
处理undefined, null和NaN: null的行为像0,NaN和undefined结束。
array = [3, 5, -1, 1, NaN, 6, undefined, 2, null]
array.sort((a,b) => isNaN(a) || a-b)
// [-1, null, 1, 2, 3, 5, 6, NaN, undefined]
其他回答
你可以简单地排序数字数组
常量数字=[13,17,14,19,16]; 让温度; for(let i=0;i<num.length;i++){ for(let j=i+1;j<num.length;j++){ if(num[i]>num[j]){ 温度=数字[i] 数字[i]=数字[j] 数字[j]=温度 } } } 控制台.log(数字);
在JavaScript中,sort()方法的默认行为是对数组中的值按字母顺序排序。
要按数字排序,你必须定义一个数值排序函数(这很简单):
...
function sortNumber(a, b)
{
return a - b;
}
numArray = numArray.sort(sortNumber);
下面的'numerically'函数作为回调函数提供时,在许多情况下用于对数字数组进行数字排序:
function numerically(a, b){
return a-b;
}
array.sort(numerically);
但在一些罕见的情况下,数组包含非常大的负数,当a-b小于JavaScript可以处理的最小数字时,可能会发生溢出错误。
所以用数字表示函数的更好方法如下:
function numerically(a, b){
if(a < b){
return -1;
} else if(a > b){
return 1;
} else {
return 0;
}
}
只需执行.sort((a, b) => a - b),而不是.sort()本身
var numArray = [140000, 104,99]; numArray。排序((a, b) => a - b); console.log (numArray)
为了创建这种排序,你必须传递一个函数来检查哪个先出现。
在函数中定义你想检查的值:a.id - a.id
const myJson = [ {id: 1, name: 'one'}, {id: 4, name: 'four'}, {id: 2, name: ' 2 '}, {id: 3, name: ' 3 '} ]; //提供要检查的sort方法 const myNewSort = myJson。排序(函数(a, b) { 返回a.id - b.id; }); console.log('my new sort',myNewSort)