Переставьте элементы массива в соответствии с абсолютной разницей с 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] : (..