微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

首先获取对象中的最低编号

如何解决首先获取对象中的最低编号

我正在遍历一个对象,该对象是学生的术语列表。我的数据结构如下:

 terms: {
  term-termId1: {
   classData: { //some class data here that im not going to list },class2   : { //some class data here that im not going to list },class3   : { //some class data here that im not going to list },termName: 'Spring 2018',gradeLevel: 9,},term-termId2: {
   classData: { //some class data here that im not going to list },termName: 'Summer 2018',term-termId3: {
   classData: { //some class data here that im not going to list },termName: 'Summer 2020',gradeLevel: 12,term-termId4: {
   classData: { //some class data here that im not going to list },termName: 'Summer 2019',gradeLevel: 11,term-termId5: {
   classData: { //some class data here that im not going to list },gradeLevel: 10,term-termId6: {
   classData: { //some class data here that im not going to list },termName: 'Winter 2018',}

那是我要提供的所有数据,条目分散了。

我试图首先获取最低的gradeLevel条目,以便将它们传递给创建表组件的函数。例如,我希望所有的gradeLevel:首先是9 s,然后是10 s,然后是11 s然后是12 s。

我只是想知道一个方法。我可以想到几种方法,例如在循环中编写一些if语句,但我肯定可以做得更好。

目前我是这样开始的:

    for (single in terms) {
      for (term in terms[single]) {
        const classes = terms[single]
        console.log(classes[term])
      }
    }

我知道循环与我提供的数据不匹配,这就是我在计算机上获取数据的方式。我只是举了一个例子。

无论如何,如果能得到一些帮助,找出首先获得最低GradeLevel条目的最佳方法,那将是很棒的事情。

解决方法

首先对对象的值进行排序:

const sortedValues = Object.values(data.terms).sort((a,b) => a.gradeLevel - b.gradeLevel);

然后根据需要遍历sortedValues

,

将您的terms转换为键值对,对其进行排序并转换回对象

const res = Object.fromEntries(
  Object.entries(terms).sort(
    (termA,termB) => termA[1].gradeLevel - termB[1].gradeLevel
  )
)

const terms = {
  "term-termId1": {
    termName: "Spring 2018",gradeLevel: 9,},"term-termId2": {
    termName: "Summer 2018","term-termId3": {
    termName: "Summer 2020",gradeLevel: 12,"term-termId4": {
    termName: "Summer 2019",gradeLevel: 11,"term-termId5": {
    termName: "Summer 2019",gradeLevel: 10,"term-termId6": {
    termName: "Winter 2018",}

const res = Object.fromEntries(
  Object.entries(terms).sort(
    (termA,termB) => termA[1].gradeLevel - termB[1].gradeLevel
  )
)

console.log(res)


参考

Object.prototype.entries()

Object.prototype.fromEntries()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。