Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按最接近x的值对对象数组排序_Javascript_Arrays_Sorting - Fatal编程技术网

Javascript 按最接近x的值对对象数组排序

Javascript 按最接近x的值对对象数组排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个object数组,我想按最接近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。因此,新秩序将类似于:

我有一个object数组,我想按最接近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。

您可以根据值和所需值的绝对增量进行排序

var数组=[{name:“some 1”,value:12.4},{name:“some 2”,value:11.4},{name:“some 3”,value:10.5},{name:“some 4”,value:11.4}],
数值=11;
sort(({value:a},{value:b})=>Math.abs(a-value)-Math.abs(b-value));
console.log(数组)
.as console wrapper{max height:100%!important;top:0;}
您可以使用距离(差值的绝对值-x
)对数组进行如下排序:

arr.sort((a, b) => Math.abs(a.value - x) - Math.abs(b.value - x));

从值中减去X。根据您希望它是升序还是降序,交换减去的顺序。