按键值排序对象

时间:2017-08-14 13:07:56

标签: javascript sorting object

我遇到了一个对象结构(现在)我想看看我是否可以尝试排序。我的对象现在看起来像这样 -

{
  "type1" : { 
    "position": 3
  },
  "type2" : { 
     "position": 1
  }
}

我想弄清楚的是,是否有办法重新排序(排序)对象键/值但嵌套位置。所以期望的结果将是

{
  "type2" : { 
     "position": 1
  },
  "type1" : { 
    "position": 3
  }
}

那么确定顺序的是对象中的position值。我正在重构另一个项目,尝试在此列表中添加一些排序。我知道如果它是一个对象列表会更容易很多,但这需要我改变很多其他代码,所以我试图找出是否可以将对象结构保持为是(如果可能的话)。谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

var a = {
  "type1" : { 
    "position": 3
  },
  "type2" : { 
     "position": 1
  }
};

var b = Object.assign(
    ...Object
    .keys(a)
    .sort((x, y) => a[x].position >= a[y].position)
    .map(k => ({ [k]: a[k] }))
);

console.log (b);