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

我正在尝试用_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,

  },

}

有没有办法对这些顶级键进行排序和保留?我也需要能够对这些进行排序。


守着一只汪
浏览 145回答 2
2回答

料青山看我应如是

在@Paul的启发性例子引发的大量研究之后,我终于偶然发现了这个解决方案,不是文章,而是Max Loh&nbsp;在这篇博客文章的最底部的评论。这是这个问题的解决方案,它工作得很好。只需要在下游代码中调整两件事。无论如何。let&nbsp;newArray=&nbsp;Object.entries(bigArray).map(e&nbsp;=>&nbsp;({&nbsp;id:&nbsp;e[0],&nbsp;data:&nbsp;e[1]&nbsp;}))这有效地将我的对象转换为一个数组,我能够轻松地使用该数组进行排序。aa,我学到了更深层次的JS来启动。双赢。:)_.orderBy希望这对其他人有所帮助。

侃侃无极

那是因为你实际上是一个对象,没有数组。将其定义为数组,即可获得所需的结果。bigArray[]bigArray = [{&nbsp; "22H7564": {&nbsp; //&nbsp; <------&nbsp; these are the top level keys&nbsp; &nbsp; "name":"Thor",&nbsp; &nbsp; "age":"600",&nbsp; &nbsp; "height":187,&nbsp; },&nbsp; "20H3211": {&nbsp; &nbsp; "name":"Mesa",&nbsp; &nbsp; "age":"42",&nbsp; &nbsp; "height":120,&nbsp; },&nbsp; "27H4506": {&nbsp; &nbsp; "name":"Jesper",&nbsp; &nbsp; "age":"122",&nbsp; &nbsp; "height":143,&nbsp; },}]console.log(_.orderBy(bigArray, 'name', 'desc'));<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript