【问题标题】:Javascript JSON Data processed based on date [closed]基于日期处理的Javascript JSON数据[关闭]
【发布时间】:2023-04-02 07:30:01
【问题描述】:

我给出了下面的数组。我的问题是如何根据日期处理数据。 例如:从服务获得以下响应。

[[
  {"claimNumber":"6396","itemNumber":"1","dateAssessed":"20/10/2015"},
  {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
  {"claimNumber":"918","itemNumber":"1","dateAssessed":"12/09/2015"},
  {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
  {"claimNumber":"2206","itemNumber":"1","dateAssessed":"20/09/2015"},
  {"claimNumber":"2205","itemNumber":"1","dateAssessed":"20/09/2015"},
  {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
]]

我想根据日期处理数据如下:

2015 年 9 月 20 日

  {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
  {"claimNumber":"2206","itemNumber":"1","dateAssessed":"20/09/2015"},
  {"claimNumber":"2205","itemNumber":"1","dateAssessed":"20/09/2015"},
  {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"}

2015 年 10 月 20 日

   {"claimNumber":"6396","itemNumber":"1","dateAssessed":"20/10/2015"}

2015 年 12 月 9 日

  {"claimNumber":"918","itemNumber":"1","dateAssessed":"12/09/2015"}

【问题讨论】:

标签: javascript arrays json


【解决方案1】:

为此制作一些排列功能。 安排()返回对象中的分组数据。

        var data = [[
            {"claimNumber":"6396","itemNumber":"1","dateAssessed":"20/10/2015"},
            {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
            {"claimNumber":"918","itemNumber":"1","dateAssessed":"12/09/2015"},
            {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
            {"claimNumber":"2206","itemNumber":"1","dateAssessed":"20/09/2015"},
            {"claimNumber":"2205","itemNumber":"1","dateAssessed":"20/09/2015"},
            {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
        ]];

        function arrange(data) {
            var res = {};

            for(var i = 0, obj; obj = data[i]; i++) {

                if(!res[obj.dateAssessed]) {
                    res[obj.dateAssessed] = [];
                }

                res[obj.dateAssessed].push(obj);
            }

            return res;
        }

        /* it returns like:
            {
                12/09/2015: [{ ... }],
                20/09/2015: [{ ... }],
                20/10/2015: [{ ... }]
            }
        */
        arrange(data[0]);

【讨论】:

    【解决方案2】:

    好吧,我会这样做:

    • 按日期排序数据,
    • 创建新的空对象newData,
    • 遍历数据数组,
      • 数据 = 数据[i].date;
      • 检查 newData[data] 是否存在:如果不存在,则使用 value 中的空数组创建它
      • 将 data[i] 添加到 newData[data]

    我没有提到类型转换等。

    【讨论】:

    • @Reeno 真的是个新问题吗?
    【解决方案3】:

    你可以使用.filter

    function reduceArr(x, date){
        return x[0].filter(function(elem){
            return elem.dateAssessed==date;
        });
    }
    
    console.log(reduceArr(x, "20/09/2015"));
    

    这将返回所需对象的数组。

    Working Fiddle

    【讨论】:

      【解决方案4】:

      不清楚你的问题,但如果你想按日期分组,那么:

      var arr=[
        {"claimNumber":"6396","itemNumber":"1","dateAssessed":"20/10/2015"},
        {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
        {"claimNumber":"918","itemNumber":"1","dateAssessed":"12/09/2015"},
        {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
        {"claimNumber":"2206","itemNumber":"1","dateAssessed":"20/09/2015"},
        {"claimNumber":"2205","itemNumber":"1","dateAssessed":"20/09/2015"},
        {"claimNumber":"2208","itemNumber":"1","dateAssessed":"20/09/2015"},
      ];
      var newarr = {};
      for(var i=0; i<arr.length;i++){
          newarr[arr[i].dateAssessed] = newarr[arr[i].dateAssessed] || [];
          newarr[arr[i].dateAssessed].push(arr[i]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多