You can make it (slightly) more efficient by using else if, since if an earlier if's condition is true, by definition later ones can't be.
Long series of else if in JavaScript can be written as switch instead.
for (var i = 0; i < DailyLogs.length; i++) {
if (DailyLogs[i].created_at >= this.state.startMonth && DailyLogs[i].created_at <= this.state.finishMonth) {
switch (DailyLogs[i].created_by_id) {
case "37aa0778-c148-4c04-b239-18885d46a8b0": md1++; break;
case "869a7967-ffb3-4a20-b402-ad6d514472de": md2++; break;
case "92c0f155-ce82-4b50-821f-439428c517a3": md3++; break;
case "aa9eb0f2-35af-469a-8893-fc777b444bed": md4++; break;
case "967d63ea-492c-4475-8b08-911be2d0bf22": md5++; break;
case "47ec8d60-1fa2-4bf5-abc8-34df6bd53079": md6++; break;
case "92c0f155-ce82-4b50-821f-439428c517a3": md7++; break;
}
}
}
Using else if vs. switch is largely a matter of style in cases like this.
Another option is to maintain your counters in an object keyed by the created_by_id:
var md = {
"37aa0778-c148-4c04-b239-18885d46a8b0": 0,
"869a7967-ffb3-4a20-b402-ad6d514472de": 0,
"92c0f155-ce82-4b50-821f-439428c517a3": 0,
"aa9eb0f2-35af-469a-8893-fc777b444bed": 0,
"967d63ea-492c-4475-8b08-911be2d0bf22": 0,
"47ec8d60-1fa2-4bf5-abc8-34df6bd53079": 0,
"92c0f155-ce82-4b50-821f-439428c517a3": 0
};
for (var i = 0; i < DailyLogs.length; i++) {
if (DailyLogs[i].created_at >= this.state.startMonth && DailyLogs[i].created_at <= this.state.finishMonth && md.hasOwnProperty(DailyLogs[i].created_by_id)) {
md[DailyLogs[i].created_by_id]++;
}
}
You can also avoid the repeated DailyLogs[i] by using a variable in the loop body:
var log = DailyLogs[i];
if (log.created_at >= ...)
In modern ES2015+ environments, you can combine for-of with destructuring:
for (const {created_at, created_by_id} of DailyLogs) {
if (created_at >= this.state.startMonth && created_at <= this.state.finishMonth) {
switch (created_by_id) {
case "37aa0778-c148-4c04-b239-18885d46a8b0": md1++; break;
case "869a7967-ffb3-4a20-b402-ad6d514472de": md2++; break;
case "92c0f155-ce82-4b50-821f-439428c517a3": md3++; break;
case "aa9eb0f2-35af-469a-8893-fc777b444bed": md4++; break;
case "967d63ea-492c-4475-8b08-911be2d0bf22": md5++; break;
case "47ec8d60-1fa2-4bf5-abc8-34df6bd53079": md6++; break;
case "92c0f155-ce82-4b50-821f-439428c517a3": md7++; break;
}
}
}
Those options can be combined in various ways, for instance:
const md = {
"37aa0778-c148-4c04-b239-18885d46a8b0": 0,
"869a7967-ffb3-4a20-b402-ad6d514472de": 0,
"92c0f155-ce82-4b50-821f-439428c517a3": 0,
"aa9eb0f2-35af-469a-8893-fc777b444bed": 0,
"967d63ea-492c-4475-8b08-911be2d0bf22": 0,
"47ec8d60-1fa2-4bf5-abc8-34df6bd53079": 0,
"92c0f155-ce82-4b50-821f-439428c517a3": 0
};
for (const {created_at, created_by_id} of DailyLogs) {
if (created_at >= this.state.startMonth && created_at <= this.state.finishMonth && md.hasOwnProperty(created_by_id)) {
md[created_by_id]++;
}
}
mds?created_by_idvalues?md*values it looks like you are counting the number of daily logs each user has submitted. May I suggest you to use some sort of "group by" operation in the database you are using? Most SQL engines come with such a feature, and it is better to do so in SQL. Particularly because the number ofmd*(users) may increase in future, which would require further code changes (in Javascript).