Nic*_*ild 2 javascript momentjs lodash
我正在尝试按今天、本周、本月和前几个月对一堆日期进行分组。然而,在我达到这一点之前,我什至都在努力按月进行基本分组。
const data = [{
campaign: "Charles",
company_ID: "1",
coreURL: "http://www.test77.com",
createdAt: "2017-11-06T20:45:56.931Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-09-06T20:45:56.931Z",
_id: "6gsb42PSSJt7PgsDG"
}, {
campaign: "Charles",
company_ID: "1",
coreURL: "http://www.test66,com",
createdAt: "2017-11-06T20:46:27.744Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-10-06T20:46:27.744Z",
_id: "Md4wCnEsrQrWApnLS"
}, {
campaign: "Gary",
company_ID: "1",
coreURL: "http://www.test55,com",
createdAt: "2017-11-06T20:46:27.744Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-07-06T20:46:27.744Z",
_id: "5p44uiwRgqp35YXRf"
}
];
const grouper = 'updatedAt';
let groupedData = _
.chain(data)
.groupBy(datum => moment(datum.grouper).format("MM"))
Run Code Online (Sandbox Code Playgroud)
编辑:然而,这似乎只按“11”(今天的月份)分组
任何帮助将非常感激
datum.grouper返回当前日期也是undefined如此moment(datum.grouper)。
您应该改为使用datum[grouper]或类似的东西_.property('updatedAt')。
关于如何将日期划分为今天、本周、本月和其他月份的问题,请尝试以下操作:
const data = [{
campaign: "Charles",
company_ID: "1",
coreURL: "http://www.test77.com",
createdAt: "2017-11-06T20:45:56.931Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-09-06T20:45:56.931Z",
_id: "6gsb42PSSJt7PgsDG"
}, {
campaign: "Charles",
company_ID: "1",
coreURL: "http://www.test66,com",
createdAt: "2017-11-06T20:46:27.744Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-10-06T20:46:27.744Z",
_id: "Md4wCnEsrQrWApnLS"
}, {
campaign: "Gary",
company_ID: "1",
coreURL: "http://www.test55,com",
createdAt: "2017-11-06T20:46:27.744Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-07-06T20:46:27.744Z",
_id: "5p44uiwRgqp35YXRf"
}, {
campaign: "Fred",
company_ID: "1",
coreURL: "http://www.test55,com",
createdAt: "2017-11-06T20:46:27.744Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-11-15T03:46:27.744Z",
_id: "5p44uiwRgqp35YXRf"
}, {
campaign: "Fred",
company_ID: "1",
coreURL: "http://www.test55,com",
createdAt: "2017-11-06T20:46:27.744Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-11-03T20:46:27.744Z",
_id: "5p44uiwRgqp35YXRf"
}, {
campaign: "Fred",
company_ID: "1",
coreURL: "http://www.test55,com",
createdAt: "2017-11-06T20:46:27.744Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-11-13T20:46:27.744Z",
_id: "5p44uiwRgqp35YXRf"
}, {
campaign: "Fred",
company_ID: "1",
coreURL: "http://www.test55,com",
createdAt: "2017-11-06T20:46:27.744Z",
owner: "K7xTxu7PRDCuhFZRC",
updatedAt: "2017-11-09T20:46:27.744Z",
_id: "5p44uiwRgqp35YXRf"
}];
const groupProp = _.property('updatedAt');
let determineGroup = value => {
// remove '2017-11-15' to actually use current date
const now = moment('2017-11-15T10:00:03Z').startOf('day');
if (value.isSame(now, 'day')) {
return 'today';
}
if (value.isAfter(now.clone().subtract(7, 'days').startOf('day'))) {
return 'this week';
}
if (value.isSame(now, 'month')) {
return 'this month';
}
return value.format('MM');
};
let groupedData = _
.chain(data)
.groupBy(datum => determineGroup(moment(groupProp(datum))))
.value()
console.log(groupedData);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1274 次 |
| 最近记录: |