javascript中的过滤和缩减对象

javascript中的过滤和缩减对象,javascript,Javascript,我真的不知道该怎么做,我有一个包含多个对象的对象。看起来是这样的: object { apps: { apps1: { date: "2017-07-05T17:13:53.956Z", status: false } }, apps2: { date: "2017-07-11T15:15:39.027Z", status

我真的不知道该怎么做,我有一个包含多个对象的对象。看起来是这样的:

object {
    apps: {
       apps1: {
           date: "2017-07-05T17:13:53.956Z",
           status: false
              }
          },
       apps2: {
            date: "2017-07-11T15:15:39.027Z",
            status: false
              },
       apps3: {
            date: "2017-07-11T15:36:33.063Z",
            status: true
              }
       }
现在我想先按日期对它们进行排序,这是可行的:

function getAppStatus(user) {
  let newArr = Object.keys(user.apps).reduce(function(a, b) {
    return user.apps[a].date > user.apps[b].date ? a : b;
  });
但是我只想对status===false的一个进行排序,所以基本上我想删除状态为true的apps3,然后按日期对其余的进行排序

有什么想法吗

谢谢

试试类似的方法

var newArr = Object.keys(user.apps)
      // convert the object to an array by key.
      .map(function (key) { return user.apps[key]; })
      // get apps with status === false.
      .filter(function (app) { return !app.status; })
      // sort by date. Since the date is stored as a string, use localeCompare.
      .sort(function (a1, a2) { return a1.date.localeCompare(a2.date)); });

是否要使用reduce对项目进行筛选/排序?首先使用filter,然后使用sort。您是要获取第一个日期的密钥,还是要对需要数组的任何内容进行排序?@Bergi我只想按日期对状态为false的内容进行排序。我已经可以按日期对它们进行排序,但在最终对象中,我仍然有一个状态为:true的对象。首先拼接状态为===false的对象,然后在最新数组上使用您的排序方法。@Niscalkumarbc如果OP使用筛选器,则无需拼接。您能对此进行解释吗?它可以工作。使用此对象:var user={apps:{apps1:{date:2017-07-05T17:13:53.956Z,status:false},apps2:{date:2017-07-11T15:15:39.027Z,status:false},apps3:{date:2017-07-11T15:36:33.063Z,status:true}}}@Bergi谢谢,我将它切换到localeCompare以避免编写排序函数。谢谢你的回答!我是一个需要自己解决的难题