Javascript Rsjx:按日期对数据块进行排序

Javascript Rsjx:按日期对数据块进行排序,javascript,ecmascript-6,Javascript,Ecmascript 6,我使用HTTP get方法来接收数据。不幸的是,虽然我确实以块的形式接收这些数据,但它并没有按creationDate降序排序。 我需要按创建日期对这些对象进行排序,我的预期结果是 [{"creationDate":"2011-03-13T00:17:25.000Z","fileName":"IMG_0001.JPG"}, {"creationDate":"2009-10-09T21:09:20.000Z","fileName":"IMG_0002.JPG"}] [{"creationDate

我使用HTTP get方法来接收数据。不幸的是,虽然我确实以块的形式接收这些数据,但它并没有按creationDate降序排序。 我需要按创建日期对这些对象进行排序,我的预期结果是

[{"creationDate":"2011-03-13T00:17:25.000Z","fileName":"IMG_0001.JPG"},
{"creationDate":"2009-10-09T21:09:20.000Z","fileName":"IMG_0002.JPG"}]

[{"creationDate":"2012-10-08T21:29:49.800Z","fileName":"IMG_0004.JPG",
{"creationDate":"2010-08-08T18:52:11.900Z","fileName":"IMG_0003.JPG"}]
以下是我尝试过的:

[{"creationDate":"2012-10-08T21:29:49.800Z","fileName":"IMG_0004.JPG"},
{"creationDate":"2011-03-13T00:17:25.000Z","fileName":"IMG_0001.JPG"}]

[{"creationDate":"2010-08-08T18:52:11.900Z","fileName":"IMG_0003.JPG"},
{"creationDate":"2009-10-09T21:09:20.000Z","fileName":"IMG_0002.JPG"}]
这只能工作,但一次只能有一个对象,这会给我带来最好的结果。我需要一些方法将这些块连接在一起并对它们进行排序,然后以某种方式将整个对象再次分成两块


是否有任何RSJX操作符可以用于此操作?

如果您知道调用肯定会完成(它应该完成),那么您可以使用它,顾名思义,它返回一个数组,然后您可以对其进行排序。toArray的要点是它不会产生数据流,但会等待观测者完成并返回所有值:

dataInChunks.map(data => {
    return data.sort((a,b)=> {
      return new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime();
    });
  })
  .subscribe(data => {
    console.log(data);
  })
但是,如果需要在数据到达时在浏览器中显示数据(如果toArray()方法使UI感觉无响应),则必须在数据到达时对不断增加的数据集重新排序:

var allData = dataInChunks.toArray().sort(/*sorting logic*/);
这有点粗糙,因为它依赖于流之外的变量,但仍然得到了这个想法。它使用一个缓冲区,允许您限制重新排序的次数

TBH,我只想采用toArray方法,这就引出了一个问题,为什么它首先是可观测的!祝你好运

var allData =[];
dataInChunks
    .bufferWithCount(4)
    .subscribe(vals => {
        allData = allData.concat(vals);
        allData.sort(/* sort logic*/);
    })