试图从一个只包含整数的数组中获得最大值和最小值似乎比我想象的要难。
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默认使用字母排序,而不是数字排序。
要支持数字,请添加如下的like
var numArray = [140000, 104, 99];
numArray.sort((a, b) => a - b); // <-- Ascending
numArray.sort((a, b) => b - a); // <-- Descending
console.log(numArray);
输出:
其他回答
数组中。Sort默认执行字典排序,对于数字排序,提供自己的函数。这里有一个简单的例子:
function compareNumbers(a, b)
{
return a - b;
}
numArray.sort(compareNumbers);
还要注意,排序是“就地”工作的,不需要赋值。
Array.prototype.sort()是用于排序数组的go to方法,但我们需要注意几个问题。
无论数组中值的类型如何,排序顺序默认是字典顺序,而不是数字顺序。即使数组都是数字,所有值也将转换为字符串并按字典顺序排序。
因此,我们需要像下面那样定制sort()和reverse()方法。
引用URL
用于对数组内的数字进行排序
numArray.sort(function(a, b)
{
return a - b;
});
用于反转数组内的数字
numArray.sort(function(a, b)
{
return b - a;
});
引用URL
sort_mixed
Object.defineProperty(Array.prototype,"sort_mixed",{
value: function () { // do not use arrow function
var N = [], L = [];
this.forEach(e => {
Number.isFinite(e) ? N.push(e) : L.push(e);
});
N.sort((a, b) => a - b);
L.sort();
[...N, ...L].forEach((v, i) => this[i] = v);
return this;
})
try a =[1,'u',"V",10,4,"c"," a "].sort_mixed();console.log (a)
试试下面的代码:
HTML:
<div id="demo"></div>
JavaScript代码:
<script>
(function(){
var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;
points.sort(function(a, b){return a-b});
document.getElementById("demo").innerHTML = points;
})();
</script>
对整数> 0排序,跳出框框思考:
函数sortArray(arr) { return new Promise((resolve) => { Const result = [] arr.forEach((item) => { setTimeout(() => { result.push(项) 如果结果。长度== arrr . Length) resolve(result) },项) }) }) } sortArray([4,2, 42岁,128年,56岁的2]),然后((结果)= > { document . write (JSON.stringify(结果)) })
请注意,这不应该有效地使用,.sort()更适合于此,检查其他答案