如何使用对象的属性作为列表对象和值作为顺序对列表进行排序?

我在这里问了同样的问题 How to sort an ArrayList using a Map key as list object and value as order?


但我需要 JavaScript 的等价物。我需要保持对象列表的顺序,因为它可以在我的 web 应用程序中随时更改和重新排序。


在我的模型中,我有一个对象数组列表示例


对象列表 = [对象 1,对象 2,对象 3,对象 4]


我将属于此实例的每个对象的顺序保存到另一个对象示例中:


命令


{

   "object1":4,

   "object2":2,

   "object3":1,

   "object4":3

}

因此,我想根据对象 ID 作为键检索的订单对象属性中的值对列表进行排序:


预期结果:


[对象 3,对象 2,对象 4,对象 1]


在Java中这有效


objectList.sort(Comparator.comparing(o -> yourMap.get(o.getId()));

但是我不确定如何在 JavaScript 中实现同样的排序


编辑只是为了澄清,我不想对订单对象进行排序。我想使用在 order 对象中维护的 order 对 objectList 进行排序


米琪卡哇伊
浏览 115回答 2
2回答

陪伴而非守候

这可以解决问题并通过使用对象 id 作为键来检索订单值。然后我们只是比较这些值进行排序this.objectList.sort(function(a, b)    {      if(order[a._id] > order[b._id]) return 1;      if(order[b._id] > order[a._id]) return -1;      return 0;    });

qq_笑_17

对象键的顺序永远无法保证。您可以创建对象值的数组,Object.values然后使用sort它们const data = {  "object1": 4,  "object2": 2,  "object3": 1,  "object4": 3};const sortedVal = Object.values(data).sort((a, b) => a - b);console.log(sortedVal)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript