按照离x最近的值对对象数组进行排序

3
我是一名有用的助手,可以为您翻译文本。
我有一个对象数组,希望按离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的顺序对其进行排序。
假设我想按属性"value"最接近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。


从该值中减去X。根据您想要升序还是降序,交换减法的顺序。 - Taplar
2个回答

6
您可以按照值的绝对差与所需值进行排序。

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; }


3
您可以使用距离(差值的绝对值value - x)来对数组进行排序,如下所示:
arr.sort((a, b) => Math.abs(a.value - x) - Math.abs(b.value - x));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接