javascript - 在最接近的解决方案之后排序数组
问题描述
我有一个未排序的数组,其中包含计算结果:
const solution = 955
const unsortedArray =
[
[["solution result cab"],[955.709]],
[["solution result abc"],[951.11]],
[["solution result cba"],[954.709]],
[["solution result bac"],[957.709]]
]
我想在解决方案的 +/- 最接近偏差之后对数组进行排序:
[
[["solution result cab"],[955.709]],
[["solution result cba"],[954.709]],
[["solution result bac"],[957.709]],
[["solution result abc"],[951.11]]
]
有什么方法可以应用范围比较sort()
还是有更好的解决方案?
解决方案
您可以创建一个比较函数来比较两个元素与解决方案的绝对差异。正数表示第一个元素更大。一个负数意味着第二个更大。
function compare(a, b) {
const aAbs = Math.abs(a[1][0] - solution);
const bAbs = Math.abs(b[1][0] - solution);
return aAbs - bAbs;
}
然后就可以运行了unsortedArray.sort(compare)
。
推荐阅读
- c# - 在 Unity 中将值添加到 Tilemap 中的特定 Tile
- java - CardLayout 的 Show 方法没有做任何事情
- regex - Fail2ban 正则表达式用于特殊日志格式
- python - 有什么方法可以用一个衬垫查看 PyCharm 控制台中定义的变量?
- c# - 如何为 ASP.NET Core 3.x 项目设置 MyControllerFactory
- odoo - Odoo:如何显示 one2many 字段中的 many2one 字段的字段
- java - 浏览器如何请求 SSL 证书?
- python - 如何使用 package.json 调用设置环境变量并让其他脚本和命令可以访问这些变量的脚本
- ruby-on-rails - 如何修复索引缺少请求格式的模板:text/html
- gitlab - VPS上Gitlab仓库地址