【发布时间】:2011-12-15 23:17:06
【问题描述】:
我正在使用此函数对数字数组进行排序,其中一些是小数。但在那种情况下,我在这些值上失去了.0。我想在指定时保留此精度,但在未指定时不添加。
例如: [1.5, 2, 0.75, 1.0, 0.75] 应该排序为 [2, 1.5, 1.0, 0.75] 但使用下面的函数排序为 [2, 1.5, 1, 0.75]
var sortNums = function( arr ) {
// Quit if arr is not an array.
if ( !$.isArray(arr) ) { return false; }
// Sort highest to lowest:
arr.sort(function(a,b) {return (b-a);});
// Remove non-numeric vals and return:
return $.map(arr, function(v) {if (typeof v === 'number') {return v;}});
};
【问题讨论】:
-
您知道
1.0和1对计算机来说是同一个数字吗? -
@minitech 当然! ;) 但我仍然需要这样做 b/c 我稍后会将它们发送到一个字符串,该字符串需要原始值。
-
所以你需要使用字符串数组,而不是数字数组,因为它们一开始就没有任何格式。
1 === 01 === 0x1 === 1.0(因此需要删除typeof检查。)
标签: javascript jquery sorting map numbers