我尝试了以下示例,但现在正在使用正确的信息。
var fruits = [110.111, 1245.22222, 2.458, 0.001];
fruits.sort();
document.write(fruits);
结果:
0.001,110.111,1245.22222,2.458
但我想要这样的东西
0.001,2.458,110..111,1245.22222
此代码有什么问题?
答案 0 :(得分:6)
array.sort([compareFunction])采用可选功能作为自定义比较器
fruits.sort(function(a, b){
return a - b;
});
如果您想要降序排序
fruits.sort(function(a, b){
return b - a;
});
via:MDN Array.prototype.sort docs
compareFunction(a, b)
小于0,则将a排序为低于b的索引,即a先出现。compareFunction(a, b)
返回0,则保持a和b相对于彼此保持不变,但是对所有不同的元素进行排序。注意:ECMAscript标准不保证这种行为,因此并非所有浏览器(例如可追溯到至少2003年的Mozilla版本)都尊重这一点。compareFunction(a, b)
大于0,则将b排序为低于。compareFunction(a, b)
必须始终返回相同的值。如果返回不一致的结果,则排序顺序未定义最近,我一直在做一些函数式编程。对于想要以不同方式解决同一问题的人来说,我会将此部分作为另一种选择。
首先,我们有一些通用的实用功能。当我们想要定义更高阶asc
和desc
排序函数时,这些是必要的。
const sub = x => y => y - x;
const flip = f => x => y => f (y) (x);
const uncurry = f => (x,y) => f (x) (y);
const sort = f => xs => xs.sort(uncurry (f));
现在,您可以根据asc
desc
和sub
const asc = sort (flip (sub));
const desc = sort (sub);
检查出来
asc ([4,3,1,2]); //=> [1,2,3,4]
desc ([4,3,1,2]); //=> [4,3,2,1]
您仍然可以使用sort (comparator) (someData)
// sort someData by `name` property in ascending order
sort ((a,b) => a.name - b.name) (someData); //=> ...
答案 1 :(得分:2)
您可以使用这样的自定义排序功能:
fruits.sort(function (a,b) {return a - b;});
Array.sort()
方法将数字视为字符串,并按ASCII顺序对成员进行排序。
答案 2 :(得分:1)
您可以定义排序功能:
fruits.sort(function(a,b) {return a>b})
答案 3 :(得分:1)
使用自定义功能进行排序。
要对它进行排序,您需要创建一个带两个的比较器函数 参数然后用该比较器调用sort函数 功能如下:
fruits.sort(function(a,b) { return parseFloat(a) - parseFloat(b) } );
如果您要排序升序更改parseInt(a) - parseInt(b)和parseInt(b) - parseInt(a)。请注意 从a变为b。