Javascript 重命名分组数组中的键,以表示它们分组的日期
我有一个数组,我按1分钟分组,相对于日期的其余部分(秒除外)。现在的问题是数组中每个组(3个组)的键只命名为0、1、2等,我希望它们的命名日期与它们表示的分组日期相同 像这样:Javascript 重命名分组数组中的键,以表示它们分组的日期,javascript,node.js,Javascript,Node.js,我有一个数组,我按1分钟分组,相对于日期的其余部分(秒除外)。现在的问题是数组中每个组(3个组)的键只命名为0、1、2等,我希望它们的命名日期与它们表示的分组日期相同 像这样: [ "Fri Jan 31 2020 14:58": [ { "_id": "5e34326b1da7e21c04ec76e8", "message": "15", "room": "5e32c3f858f00d4ef5f9ab81", "createdAt":
[
"Fri Jan 31 2020 14:58": [
{
"_id": "5e34326b1da7e21c04ec76e8",
"message": "15",
"room": "5e32c3f858f00d4ef5f9ab81",
"createdAt": 1580479083,
"user": "5e10e7a6a69a4a36e4169bdc",
"__v": 0
},
{
"_id": "5e34327e1da7e21c04ec76e9",
"message": "hello",
"room": "5e32c3f858f00d4ef5f9ab81",
"createdAt": 1580479102,
"user": "5e10e7a6a69a4a36e4169bdc",
"__v": 0
},
{
"_id": "5e34328c1da7e21c04ec76ea",
"message": "156",
"room": "5e32c3f858f00d4ef5f9ab81",
"createdAt": 1580479116,
"user": "5e10e7a6a69a4a36e4169bdc",
"__v": 0
}
]
]
请参阅代码片段,如何实现这一点
const messages=[{u id:“5e34326b1da7e21c04ec76e8”,“message:“15”,“room:“5e32c3f858f00d4ef5f9ab81”,“createdAt:”1580479083,“user:”5e10e7a6a69a36e4169bdc“,“{u id:”5e34327e17e21c04ec76e9”,“message:“hello”,“room:”5e32c3f80f00d4ef5f9ab81,“createda2”,“created15e40a6b9a6b:”user:“,”e40a6e40a6a6e:{:”e40a6a6a6u:“id:”e40a6e4a6e4a6a6a6e:”u9a6a6e:“,{:”“56”,“房间”,“房间”,“房间”,“房间”,“房间”,“房间”,“房间”,“5E33333333F858f58f080f55f55f55f5f5f5f5f5f55f5f5f5f5f5f5f5f5f5f5f5f55f555f5f55f55f55f5f5f5f5f5f5f81”,“创建数据:15880479116,”用户:“用户”,“用户”,“用户”,“用户”,“用户”,“用户”,“用户”,“用户”,“5E10E10E7777E7E7E7E7E7E7E7E7E7E7E7E7E7A67A6A67A6A67A6A6A6A67A6A67A6A6A67A6A6A67A6A67A6A6A6A6A67A6A67A3A3A3A3A3A3A3A3A3A3A3A3A3A36A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3“:“最新的”会议室“:”5e32c3f858f00d4ef5f9ab81“,”createdAt“:”1580486202,“用户“:”5E10E7A69A36E4169BDC“,”会议室“:”0},{”id“:”5e344e3e744b240a5cf7c9b6“,”消息“:”最新的1“,”会议室“:”5e32c3f858f00d4ef5f9ab81“,”createdAt“:”1580486206,“用户“:”5E10E7A69A36E4169BDC“,”会议室“,”会议室“,”最新的“最新的1“,”会议室“;”;
const sortByDate=u2;.chain(消息)
.groupBy(m=>{
const d=新日期(m.createdAt*1000);
控制台日志(d);
返回数学楼层(+(d)/(1000*60));
})
.sortBy((v,k)=>{return k;})
.value();
console.log(sortByDate);
您可以通过以下方式实现:
messages.map((message) => {
d = new Date(message.createdAt);
d.setMinutes(0);
d.setSeconds(0);
arr.push({[d]:message});
});
希望能有帮助:)我只用
\uu.groupBy
和momentjs就解决了这个问题
const sortByMinute = _.groupBy(messages, function (date) {
return moment(date.createdAt*1000).startOf("minute").format();
});
它按分钟对它们进行分组,并相应地命名返回的对象!您能告诉我们您的结果应该是什么样子吗?@EmielZuurbier是的,请再次查看问题。