首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >normalizr设置新属性和分组

normalizr设置新属性和分组
EN

Stack Overflow用户
提问于 2017-11-15 02:26:40
回答 1查看 188关注 0票数 0

我有一个从API返回的JSON。

代码语言:javascript
复制
[{
        "_id": "id1",
        "userId": "u1",
        "createdOn": "2017-11-13T19:24:05.269Z"
    }, {
        "_id": "id2",
        "userId": "u2",
        "createdOn": "2017-11-13T19:23:59.777Z"
    }, {
        "_id": "id3",
        "userId": "u3",
        "createdOn": "2017-11-09T17:34:14.507Z"
    }, {
        "_id": "id4",
        "userId": "u4",
        "createdOn": "2017-11-08T18:15:54.303Z"
    }
]

首先,我需要拆分createdOn (如createdOn.split("T"))并设置一个新的属性createdDate,该属性包含一个仅包含日期的字符串。然后,我想根据新属性createdDate对其进行分类,然后将它们分组到同一日期创建的项目中。所以我试图得到一个结构,如下所示。

代码语言:javascript
复制
{
    "history": {
        "2017-11-08": {
            "id4": {
                "_id": "id4",
                "userId": "u4",
                "createdOn": "2017-11-08T18:15:54.303Z",
                "createdDate": "2017-11-08"
            }
        },
        "2017-11-09": {
            "id3": {
                "_id": "id3",
                "userId": "u3",
                "createdOn": "2017-11-09T17:34:14.507Z",
                "createdDate": "2017-11-09"
            }
        },
        "2017-11-13": {
            "id1": {
                "_id": "id1",
                "userId": "u1",
                "createdOn": "2017-11-13T19:24:05.269Z",
                "createdDate": "2017-11-13"
            },
            "id2": {
                "_id": "id2",
                "userId": "u2",
                "createdOn": "2017-11-13T19:23:59.777Z",
                "createdDate": "2017-11-13"
            }
        }
    }
}

我尝试了使用‘processStrategy’(用于拆分日期时间字符串)和多个模式的不同选项

代码语言:javascript
复制
     export const historySchema = new schema.Entity(
      "history",
      {},
      { idAttribute: "_id" },
    );

    export const historyGroupingSchema = new schema.Entity(
      "history",
      { el: [historySchema] },
      { idAttribute: "createdDate" },
    );

normalize(history, [
      historyGroupingSchema,
    ])

但不起作用。如何使用normalizr做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2017-11-15 02:37:18

要根据创建日期的日期部分对对象进行分类,您需要遍历每个对象并解析创建日期(这是第二个问题)我已经创建了一个函数,它将只返回日期。您可以更改格式,还有其他好的js库可用,特别是momentjs。一旦解析了日期,就可以循环数组并获取具有相同日期的对象

代码语言:javascript
复制
var p=[{
        "_id": "id1",
        "userId": "u1",
        "createdOn": "2017-11-13T19:24:05.269Z"
    }, {
        "_id": "id2",
        "userId": "u2",
        "createdOn": "2017-11-13T19:23:59.777Z"
    }, {
        "_id": "id3",
        "userId": "u3",
        "createdOn": "2017-11-09T17:34:14.507Z"
    }, {
        "_id": "id4",
        "userId": "u4",
        "createdOn": "2017-11-08T18:15:54.303Z"
    }
];

  function getDatepart(createdOn)
  {
    var dateFieldValue= new Date(createdOn)
    var year = dateFieldValue.getFullYear()+"";
    var month = (dateFieldValue.getMonth()+1)+"";
    var day = dateFieldValue.getDate()+"";
    var dateFormat = year + "-" + month + "-" + day;//use your format
    console.log(dateFormat)
    return dateFormat;
    
  }
  getDatepart(p[0].createdOn)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47292843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档