【问题标题】:sort array based on month [closed]根据月份对数组进行排序[关闭]
【发布时间】:2020-10-22 11:15:07
【问题描述】:

我正在尝试这样做,但我无法对其进行排序...我想在下面的输出中对数据和年份进行排序...有人帮我在 nodejs 或 javascript 中解决。

var dataCollection = [
        {
            "data": {
                "Oct-2020": 483
            }
        },
        {
            "data": {
                "Nov-2020": 5
            }
        },
        {
            "data": {
                "Mar-2020": 8
            }
        },
        {
            "data": {
                "Apr-2020": 4
            }
        },
         
    ]

我需要根据月份对这个数组进行排序

[{
        "data": {
            "Mar-2020": 8
        }
    },
    {
        "data": {
              "Apr-2020": 4
        }
    },
    {
        "data": {
            "Oct-2020": 483
        }
    },
    {
        "data": {
             "Nov-2020": 5
        }
    },

]

提前致谢

【问题讨论】:

标签: javascript node.js json mongodb


【解决方案1】:

你需要取data的key,获取月份的数值,然后按月份和年份的delta排序。

var dataCollection = [{ data: { "Oct-2018": 483 } }, { data: { "Nov-2020": 5  } }, { data: { "Mar-2020": 8  } }, { data: { "Apr-2020": 4 } }],
    month = { Jan: 1, Feb: 2, Mar: 3, Apr: 4, Mey: 5, Jun: 6, Jul: 7, Aug: 8, Sep: 9, Oct: 10, Nov: 11, Dec: 12 };

dataCollection.sort(({ data: a }, { data: b}) => {
    const
        [mA, yA] = Object.keys(a)[0].split('-'),
        [mB, yB] = Object.keys(b)[0].split('-');

    return yA - yB || month[mA] - month[mB];
});

console.log(dataCollection);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 因为它给出了错误的输出
  • 您忘记在月份对象中定义四月
  • 同时编辑了
  • 我想对月份和年份进行排序,兄弟...如果我们给出 2021 年 4 月意味着接下来是 4 月...我想根据月份和年份进行排序
  • 不,兄弟,排序一年不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 2018-06-23
  • 2013-11-24
相关资源
最近更新 更多