javascript - 对值最接近 1 的数组进行排序

标签 javascript arrays sorting

我需要对一组值进行排序。

var arr = [0.3, 0.76, 0.98, 1.12, 1.36, 1.9];

哪个值最接近 1,这将(在上面的示例中)导致:

[0.98, 1.12, 0.76, 1.36, 0.3, 1.9];

我通过使用自定义排序功能知道这一点。

arr.sort(function(a, b){
    return b - a;
});

我可以控制 sort() 的工作方式,但是,我不明白我将如何设计自定义函数以使其以所需的方式工作。

也许有人可以启发我。

最佳答案

只需检查它们与 1 的距离。

arr.sort(function(a, b){
    return Math.abs(1-a) - Math.abs(1-b);
});

简单来说,它计算两个数字与 1 的距离,即对于

  • a=-10b=4,距离分别是11和3。这 函数返回一个正数,所以 4 出现在前面 -10 在排序数组中。
  • 对于 a=-1b=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));
});

关于javascript - 对值最接近 1 的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26922131/

相关文章:

按方案中的第一个元素对列表列表进行排序

JavaFx-表格 View : How to use custom Comparator<T> for sorting?

javascript - 如何将数组中的已排序数组合并为第三个已排序数组

javascript - React 性能并将向下箭头函数作为 props 传递

c# - 如何在具有多个ID的div上获取JavaScript函数

javascript - 使用动态生成在屏幕上和屏幕外动画 SVG 对象

javascript - 设置点击发生的位置

javascript - 将数组对象添加到 HTML 表

c - 从文件中读取后,第二个字符数组覆盖第一个字符数组

python - 想要在匹配的字符串中添加遗漏的字符串