Squ*_*Cat 4 javascript arrays sorting
我需要对一组值进行排序.
var arr = [0.3, 0.76, 0.98, 1.12, 1.36, 1.9];
Run Code Online (Sandbox Code Playgroud)
哪个值最接近1,哪个(在上面的例子中)会导致:
[0.98, 1.12, 0.76, 1.36, 0.3, 1.9];
Run Code Online (Sandbox Code Playgroud)
我知道通过使用自定义排序功能.
arr.sort(function(a, b){
return b - a;
});
Run Code Online (Sandbox Code Playgroud)
我可以控制如何sort()工作,但是,我不明白我将如何设计自定义功能,以便它以所需的方式工作.
也许有人可以开导我.
Bat*_*eam 16
只需检查他们与1的距离.
arr.sort(function(a, b){
return Math.abs(1-a) - Math.abs(1-b);
});
Run Code Online (Sandbox Code Playgroud)
只是详细说明,它计算两个数字的距离,即1
a=-10并且b=4,距离分别为11和3.该函数返回一个正数,因此4在排序数组中位于-10之前.a=-1和b=4,距离将是2和3,函数返回一个负数,因此-1在数组中的4之前.根据评论的要求,以下调整将优先考虑低于1的值.
arr.sort(function(a, b){
if(a<1 && b>=1){return -1;}
if(a>=1 && b<1){return 1;}
return (Math.abs(1-a) - Math.abs(1-b));
});
Run Code Online (Sandbox Code Playgroud)