Source From Here
Question
Trying to get the highest and lowest value from an array that I know will contain only integers seems to be harder than I thought:
I'd expect this to show 99, 104, 140000. Instead it shows 104, 140000, 99. So it seems
the sort is handling the values as strings. Is there a way to get the sort function to actually sort on integer value?
How-To
By default, the sort method sorts elements alphabetically. To sort numerically just add a new method which handles numeric sorts (sortNumber, shown below):
You can use ES6 arrow functions:
Question
Trying to get the highest and lowest value from an array that I know will contain only integers seems to be harder than I thought:
- var numArray = [140000, 104, 99];
- numArray = numArray.sort();
- alert(numArray)
How-To
By default, the sort method sorts elements alphabetically. To sort numerically just add a new method which handles numeric sorts (sortNumber, shown below):
- function sortNumber(a,b) {
- return a - b;
- }
- var numArray = [140000, 104, 99];
- numArray.sort(sortNumber);
- alert(numArray.join(","));
- numArray.sort((a, b) => a - b); // For ascending sort
- numArray.sort((a, b) => b - a); // For descending sort
沒有留言:
張貼留言