我的数组是这样的:
const myArray = [{
date: "2017-01-01",
Name: "test1"
},
{
date: "2017-01-02",
Name: "test2"
},
{
date: "2017-02-04",
Name: "test3"
},
{
date: "2017-02-05",
Name: "test3"
}
]
我想将此转换为:
const myArray = [{
group: "Jan",
data: [{
date: "2017-01-01",
Name: "test1"
},
{
date: "2017-01-02",
Name: "test2"
}
]
},
{
group: "Feb",
data: [{
date: "2017-02-04",
Name: "test3"
},
{
date: "2017-02-05",
Name: "test3"
}
]
}
]
3条答案
按热度按时间daolsyd01#
假设
myArray
中的date
总是yyyy-MM-dd
,那么我的解决方案应该工作得很好。或者,@danh的建议是,使用一个对象构建索引,然后进行第二次传递以重新形成所需的输出......
,用于按年和月分组。
wswtfjt72#
您可以使用
Object.entries()
、Array#reduce
和Array#map
方法,如下所示 *:我想知道为什么
new Date(
2017 - 01 - 01).toLocaleString('default',{month:'short'})
认为日期是Sat Dec 31, 2016
,因此给出Dec
而不是Jan
,可能是Date对象有bug;如果日期的格式是mm-dd-yyyy,它可以正常工作,但是如果是yyyy-mm-dd,对象总是减去一天。使用mm-dd-yyyy格式将按预期工作至少在此为默认日期格式:
9lowa7mx3#
希望您能从下面的示例代码中得到帮助。
这里TestA应该是一个类,其内容日期和名称属性。
谢谢