javascript - 按最接近 x 的值对对象数组进行排序
问题描述
我有一个对象数组,我想按最接近 X 的值对该数组进行排序。
例如,这是一个对象数组:
[
{"name" : "some 1", "value" : 12.4},
{"name" : "some 2", "value": 11.4},
{"name" : "some 3", "value": 10.5},
{"name" : "some 4", "value": 11.4}
]
我想按最接近X的“值”对其进行排序。
假设我想对数组进行排序,使属性“值”最接近 11。所以新顺序如下:
[
{"name" : "some 2", "value": 11.4},
{"name" : "some 4", "value": 11.4},
{"name" : "some 3", "value": 10.5},
{"name" : "some 1", "value": 12.4}
]
因为 11.4 最接近 11,然后是 10.5,然后是 12.4。
解决方案
您可以按值的绝对增量和想要的值进行排序。
var array = [{ name: "some 1", value: 12.4 }, { name: "some 2", value: 11.4 }, { name: "some 3", value: 10.5 }, { name: "some 4", value: 11.4 }],
value = 11;
array.sort(({ value: a }, { value: b }) => Math.abs(a - value) - Math.abs(b - value));
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- ruby-on-rails - Ruby-On-Rails qrcode.as_svg 不生成图像
- html - 如何在同一张表中创建两列,三列和两列?
- git - 在 Jenkins 中构建管道时出现 Git 超时错误
- java - JFoenix JFXTextField NullPointerException 添加到我的应用程序时
- css - 角度组件在视图初始化后获取组件宽度高度
- javascript - 同步了 2 个 Swiper JS,但需要第二个滑块来显示当前幻灯片 +1
- javascript - 正则表达式匹配 [anypath]/ui/[anyfile].png
- javascript - (Fullcalendar 4 VueJs)columnHeaderHtml - 如何显示(dayName,dayNumber),如(Mon,8),(Tue,9)等
- python - 将值从python中的函数传递出去
- c++ - Unreal Engine 3 game crashes with Steam Input