为了账号安全,请及时绑定邮箱和手机立即绑定

JS:使用_orderBy()对嵌套数组进行排序时保留顶级键

JS:使用_orderBy()对嵌套数组进行排序时保留顶级键

守着一只汪 2022-08-27 09:41:47
我正在尝试用_orderBy()进行排序和数组,它有一个不幸的副产品,即吹走顶级数组键!我需要能够按这些顶级键以及子键进行排序(它做得很好)。bigArray = {  "22H7564": {  //  <------  these are the top level keys    "name":"Thor",    "age:"600",    "height":187,  },  "20H3211": {    "name":"Mesa",    "age:"42",    "height":120,  },  "27H4506": {    "name":"Jesper",    "age:"122",    "height":143,  },}这是排序但无聊的结果():_orderBy(BigArray, 'name', 'desc')bigArray = {  "0": {  //  <------  FRAAACK!  i need these!    "name":"Jesper",    "age:"122",    "height":143,  },  "1": {    "name":"Mesa",    "age:"42",    "height":120,  },  "2": {    "name":"Thor",    "age:"600",    "height":187,  },}有没有办法对这些顶级键进行排序和保留?我也需要能够对这些进行排序。
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

在@Paul的启发性例子引发的大量研究之后,我终于偶然发现了这个解决方案,不是文章,而是Max Loh 在这篇博客文章的最底部的评论。这是这个问题的解决方案,它工作得很好。只需要在下游代码中调整两件事。无论如何。

let newArray= Object.entries(bigArray).map(e => ({ id: e[0], data: e[1] }))

这有效地将我的对象转换为一个数组,我能够轻松地使用该数组进行排序。aa,我学到了更深层次的JS来启动。双赢。:)_.orderBy

希望这对其他人有所帮助。


查看完整回答
反对 回复 2022-08-27
?
侃侃无极

TA贡献2051条经验 获得超10个赞

那是因为你实际上是一个对象,没有数组。将其定义为数组,即可获得所需的结果。bigArray[]


bigArray = [{

  "22H7564": {  //  <------  these are the top level keys

    "name":"Thor",

    "age":"600",

    "height":187,

  },

  "20H3211": {

    "name":"Mesa",

    "age":"42",

    "height":120,

  },

  "27H4506": {

    "name":"Jesper",

    "age":"122",

    "height":143,

  },

}]


console.log(_.orderBy(bigArray, 'name', 'desc'));

<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>


查看完整回答
反对 回复 2022-08-27
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信