试图从一个只包含整数的数组中获得最大值和最小值似乎比我想象的要难。
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。看起来排序是把值当做字符串处理的。
有没有办法让排序函数对整数值进行排序?
当前回答
问题已经回答了,最短的方法是使用sort()方法。但如果你正在寻找更多的方法来排序你的数字数组,而且你也喜欢循环,请检查下面的方法
插入排序
上升: var numArray = [140000, 104, 99]; for (var i = 0; i < numArray.length; i++) { var target = numArray[i]; for (var j = i - 1; j >= 0 && (numArray[j] > target); j--) { numArray[j+1] = numArray[j]; } numArray[j+1] = 目标 } console.log(numArray);
降:
var numArray = [140000, 104, 99]; for (var i = 0; i < numArray.length; i++) { var target = numArray[i]; for (var j = i - 1; j >= 0 && (numArray[j] < target); j--) { numArray[j+1] = numArray[j]; } numArray[j+1] = 目标 } console.log(numArray);
选择排序:
提升:
var numArray = [140000, 104, 99]; for (var i = 0; i < numArray.length - 1, i++) { var min = i; for (var j = i + 1; j < numArray.length; j++) { if (numArray[j] < numArray[min]) { 最小值 = j; } } if (min != i) { var target = numArray[i]; numArray[i] = numArray[min]; numArray[min] = 目标; } } console.log(numArray);
降:
var numArray = [140000, 104, 99]; for (var i = 0; i < numArray.length - 1, i++) { var min = i; for (var j = i + 1; j < numArray.length; j++) { if (numArray[j] > numArray[min]) { 最小值 = j; } } if (min != i) { var target = numArray[i]; numArray[i] = numArray[min]; numArray[min] = 目标; } } console.log(numArray);
玩得开心
其他回答
试试下面的代码
var a = [5, 17, 29, 48, 64, 21];
function sortA(arr) {
return arr.sort(function(a, b) {
return a - b;
})
;}
alert(sortA(a));
默认情况下,sort方法按字母顺序对元素排序。要进行数字排序,只需添加一个处理数字排序的新方法(sortNumber,如下所示)
var numArray = [140000, 104, 99]; numArray.sort(function(a, b) { 返回 A - B; }); console.log(numArray);
文档:
Mozilla Array.prototype.sort()建议对不包含Infinity或NaN的数组使用这个比较函数。(因为∞-∞是NaN,不是0)。
还有按键排序对象的例子。
处理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]
为了创建这种排序,你必须传递一个函数来检查哪个先出现。
在函数中定义你想检查的值: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)
数组中。Sort默认使用字母排序,而不是数字排序。
要支持数字,请添加如下的like
var numArray = [140000, 104, 99];
numArray.sort((a, b) => a - b); // <-- Ascending
numArray.sort((a, b) => b - a); // <-- Descending
console.log(numArray);
输出: