【发布时间】:2019-11-03 21:16:53
【问题描述】:
根据与x i 的绝对差值重新排列数组元素。即,具有最小差异的元素首先出现,依此类推。就像我正在服用 数组 [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
所以根据与X的不同,元素排列成[5,9,10,3,3,2]。
我已经通过下面的代码尝试过,但仍然没有这样做:
function ar(a, x) {
var obj = {}, d, i, res;
for (i = 0; i < a.length; i++) {
d = Math.abs(a[i] - x);
obj[a[i]] = d;
}
res = Object.keys(obj).sort(function(a, b) {
return obj[a] - obj[b]
});
for (i = 0; i < res.length; i++) {
res[i] = parseInt(res[i]);
}
return res;
}
var o = ar([10, 5, 3, 9, 2, 3], 7);
console.log(o);
如您所见,我正在制作只有一个键但值在此处重复的对象.. 我找不到另一种解决方法,我得到的答案是 [5,9,10,3, 2]:(..
【问题讨论】:
-
对象不能有重复的属性,所以当你重复一个属性时它会覆盖前一个
标签: javascript arrays sorting object absolute