Lodash Groupby Fat Arrow Function With React
Following on from Lodash groupBy with moment that groups an array by dates such as today, this week, month etc by using a fat arrow function and moment I am now trying to enable if
Solution 1:
I'm assuming sortGroup
refers to the name of a property on the data, in which case, I think you need something more like this:
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');
letdetermineGroup = 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');
};
this.state = {
sortGroup: 'updatedAt'
};
letgroupby = datum => {
const groupValue = datum[this.state.sortGroup];
if (this.state.sortGroup === 'updatedAt') {
returndetermineGroup(moment(groupValue));
} else {
return groupValue;
}
}
let groupedData = _
.chain(data)
.groupBy(groupby)
.value()
console.log(groupedData);
<scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.2/moment.min.js"></script><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
Post a Comment for "Lodash Groupby Fat Arrow Function With React"