JavaScript:根据与x的绝对差重新排列数组元素

Ano*_*mus 4 javascript arrays sorting object absolute

根据与x 的绝对差值重新排列数组元素 ,即差值最小的元素排在前面,依此类推。就像我采用数组 [10, 5, 3, 9, 2, 3]x = 7那么每个元素的绝对差应该是 =

7 - 10 = 3(abs)
7 - 5 = 2
7 - 3 = 4
7 - 9 = 2(abs)
7 - 2 = 5
7 - 3 = 4
Run Code Online (Sandbox Code Playgroud)

因此根据与 X 的差异,元素排列为[5,9,10,3,3,2]

我已经通过下面的代码尝试过,但仍然失败:

7 - 10 = 3(abs)
7 - 5 = 2
7 - 3 = 4
7 - 9 = 2(abs)
7 - 2 = 5
7 - 3 = 4
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在制作只有一个键但值在这里重复的对象..我找不到另一种解决它的方法,我得到的答案是[5,9,10,3,2] :(..

Cod*_*iac 6

正如你所看到的,我正在制作只有一个键但值在此处重复的对象

对象不能具有重复的属性,因此当您重复某个属性时,它会用新值覆盖前一个属性

您可以简单地使用排序Math.abs

let arr = [10, 5, 3, 9, 2, 3]
let x = 7

let sortByDiff = (arr,x) => arr.sort((a,b)=> Math.abs(a-x) - Math.abs(b-x))

console.log(sortByDiff(arr,x))
Run Code Online (Sandbox Code Playgroud)