【发布时间】:2019-08-05 18:35:52
【问题描述】:
所以我有一个项目数组,每个项目都有一个日期(来自时刻库)和一些文本。
我能够成功地将其转换为对象的对象,但是如果两个或多个对象具有同一天,因为它被映射,它会用新的项目重写前一个项目。
我必须根据 YYYY-MM-DD 格式来组织对象的对象。
例如,items 数组在控制台登录时可能如下所示-
Array [
Object {
"date": 2019-08-06T19:10:00.000Z,
"id": 0,
"text": "Item1",
},
Object {
"date": 2019-08-06T22:10:00.000Z,
"id": 1,
"text": "Item2",
},
]
这是我用来将其转换为对象对象的代码
const calItemsArray = Object.assign({},
...this.props.items.map(item =>
({ [moment(item.date).format('YYYY-MM-DD')]: [{
text: item.text, time: moment(item.date).format('h:mm a') }]
}))
);
console.log(calItemsArray);
这是控制台根据给定数据从 calItemsArray 记录的内容(两个项目具有相同的日期)
Object {
"2019-08-06": Array [
Object {
"text": "Item2", //item one seems to be overwritten
"time": "6:10 pm",
},
],
}
我希望每个日期都包含具有该日期的所有文本和项目的时间。但是,如果一个已经存在,而不是将其添加到对象的日期数组中,它只是重写日期的对象本身。
【问题讨论】:
-
示例数据会有所帮助
-
对象中的所有键都必须是唯一的,是否有理由需要将这些数据保存在对象而不是数组中?
-
react 要求所有列表元素都是唯一的,指定一个关键属性
-
在这种情况下,您是否也应该使用您的代码来创建列表?
-
我发现您的主题具有误导性。我认为它应该说“如何按日期对一组对象进行分组”。
标签: javascript arrays react-native