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

匿名

根据具有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

因此,根据与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] :( ..

代码疯子

如您所见,我正在制作仅具有一个键但值在此处重复的对象

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

您可以简单地使用sort 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))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Java

Java根据元素编号重新排列数组

来自分类Dev

重新排列JavaScript数组

来自分类Dev

在cmd中重新排列数组元素

来自分类Dev

使用JavaScript重新排列元素

来自分类Dev

根据数字顺序重新排列数组元素,并以数组id表示

来自分类Dev

根据嵌套数组重新排列对象数组

来自分类Dev

根据文本内容重新排列DOM元素

来自分类Dev

根据给定的标准重新排列DOM元素

来自分类Dev

根据JSON数组重新排列HTML表格数据

来自分类Dev

根据公共键/值对重新排列对象数组

来自分类Dev

根据值重新排列数组数据并更新键名称

来自分类Dev

根据每个对象的ID重新排列数组

来自分类Dev

Javascript-按数组重新排列对象数组(值)

来自分类Dev

重新排列numpy数组

来自分类Dev

Javascript通过相同的对象键重新排列数组

来自分类Dev

Javascript:以特定数组格式重新排列json输出

来自分类Dev

PHP根据id重新排列数据

来自分类Dev

根据窗口宽度重新排列链

来自分类Dev

重新排列dom中的html元素

来自分类Dev

重新排列Erlang中的元素

来自分类Dev

重新排列数组索引雄辩的Laravel

来自分类Dev

重新排列NumPy数组中的值

来自分类Dev

在Python中重新排列数组

来自分类Dev

排序和重新排列(不同的)数组

来自分类Dev

重新排列Python argparse参数组

来自分类Java

用Java重新排列数组

来自分类Dev

AngularJS $ scope数组对象重新排列

来自分类Dev

在React JS中重新排列数组

来自分类Dev

python根据子列表值重新排列列表中的元素

TOP 榜单

热门标签

归档