我的数组是这样的:
myArray = [
{date: "2017-01-01", num: "2"}
{date: "2017-01-02", num: "3"}
{date: "2017-02-04", num: "6"}
{date: "2017-02-05", num: "15"}
]
我想把它转换成:
myArray = [
{group: "0", data: [
{date: "2017-01-01", num: "2"}
{date: "2017-01-02", num: "3"}]
},
{group: "1", data: [
{date: "2017-02-04", num: "6"}
{date: "2017-02-05", num: "15"}]
},
]
基本上,按日期键的月份进行分组。
解决方案使用Array.prototype.reduce
, String.prototype.split
and Array.prototype.map
功能:
var myArray = [
{date: "2017-01-01", num: "2"},
{date: "2017-01-02", num: "3"},
{date: "2017-02-04", num: "6"},
{date: "2017-02-05", num: "15"}
],
groupKey = 0;
groups = myArray.reduce(function (r, o) {
var m = o.date.split(('-'))[1];
(r[m])? r[m].data.push(o) : r[m] = {group: String(groupKey++), data: [o]};
return r;
}, {});
var result = Object.keys(groups).map(function(k){ return groups[k]; });
console.log(result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)