【问题标题】:Sorting objects javascript with react and firebase使用 react 和 firebase 对对象 javascript 进行排序
【发布时间】:2018-10-03 20:16:37
【问题描述】:

我正在使用 react 做一个项目,我无法对多个对象的值进行排序。

其实我的对象的结构如下:

object1:
   subobject1
      hours: "06",
      details:"lorem ipsum",
   subobject2
      hours: "04",
      details:"lorem ipsum",
object2:
   subobject1
      hours: "05",
      details:"lorem ipsum",
   subobject2
      hours: "01",
      details:"lorem ipsum",

所有恢复的对象都是相同的形式。

我想通过对“小时”属性进行排序来显示这些对象并返回一个像这样的对象:

   object1:
   subobject1
      hours: "04",
      details:"lorem ipsum",
   subobject2
      hours: "06",
      details:"lorem ipsum",
object2:
   subobject1
      hours: "01",
      details:"lorem ipsum",
   subobject2
      hours: "05",
      details:"lorem ipsum",

你能帮帮我吗?

感谢您的帮助

编辑:对不起,我的结构错了

【问题讨论】:

    标签: javascript reactjs firebase object


    【解决方案1】:

    你可以使用 lodash 来实现这样一个简单的功能 https://lodash.com/docs/4.17.5#sortBy

    import _ from 'lodash'
    
    objects = [{hours: 1}, {hours: 3}]
    sortedObject = _.sortBy(objects, 'hours')
    

    【讨论】:

      【解决方案2】:

      假设data 是一个包含所有这些对象的数组

      升序

      var sortedData = data.sort((a, b) => Number(a.hours) - Number(b.hours));
      

      降序

      var sortedData = data.sort((a, b) => Number(b.hours) - Number(a.hours));
      

      【讨论】:

      • 嗨,问题是它是对象的对象,所以我没有看到如何使用它
      【解决方案3】:

      我假设您正在处理一组对象。如果是这样,这可以简单地完成

      ArrayOfObjects.sort(function(a, b) { return (+a.hours) - (+b.hours) });
      

      或者es6

      ArrayOfObjects.sort((a, b) => (+a.hours) - (+b.hours));
      

      【讨论】:

      • 然后您可以使用Object.keys(ObjectOfObjects) 构建一个对象数组,然后使用.reduce 以点状方式重新创建您的对象对象。 .
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 2021-08-19
      • 2018-08-18
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      相关资源
      最近更新 更多