首页 > 解决方案 > 在最接近的解决方案之后排序数组

问题描述

我有一个未排序的数组,其中包含计算结果:

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()还是有更好的解决方案?

标签: javascriptarrayssortingmultidimensional-array

解决方案


您可以创建一个比较函数来比较两个元素与解决方案的绝对差异。正数表示第一个元素更大。一个负数意味着第二个更大。

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)


推荐阅读