Created
February 25, 2020 16:14
-
-
Save danieluhm2004/9f71b447bcc9964d66b6dc221cbc851c to your computer and use it in GitHub Desktop.
github-contributions-ranking
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| console.time(); | |
| // data is example source. | |
| const data = { | |
| data: { | |
| '2019': { | |
| '2': { '24': 0, '25': 1, '26': 0, '27': 0, '28': 0 }, | |
| '3': { | |
| '1': 0, | |
| '2': 0, | |
| '3': 1, | |
| '4': 0, | |
| '5': 0, | |
| '6': 0, | |
| '7': 0, | |
| '8': 0, | |
| '9': 5, | |
| '10': 6, | |
| '11': 0, | |
| '12': 7, | |
| '13': 0, | |
| '14': 0, | |
| '15': 0, | |
| '16': 0, | |
| '17': 2, | |
| '18': 0, | |
| '19': 0, | |
| '20': 0, | |
| '21': 0, | |
| '22': 0, | |
| '23': 0, | |
| '24': 0, | |
| '25': 0, | |
| '26': 0, | |
| '27': 1, | |
| '28': 5, | |
| '29': 4, | |
| '30': 10, | |
| '31': 1, | |
| }, | |
| '4': { | |
| '1': 4, | |
| '2': 0, | |
| '3': 6, | |
| '4': 7, | |
| '5': 0, | |
| '6': 0, | |
| '7': 0, | |
| '8': 0, | |
| '9': 0, | |
| '10': 1, | |
| '11': 1, | |
| '12': 0, | |
| '13': 0, | |
| '14': 3, | |
| '15': 0, | |
| '16': 1, | |
| '17': 4, | |
| '18': 0, | |
| '19': 2, | |
| '20': 0, | |
| '21': 0, | |
| '22': 0, | |
| '23': 0, | |
| '24': 0, | |
| '25': 0, | |
| '26': 0, | |
| '27': 0, | |
| '28': 0, | |
| '29': 0, | |
| '30': 0, | |
| }, | |
| '5': { | |
| '1': 0, | |
| '2': 0, | |
| '3': 1, | |
| '4': 2, | |
| '5': 1, | |
| '6': 0, | |
| '7': 0, | |
| '8': 5, | |
| '9': 3, | |
| '10': 3, | |
| '11': 3, | |
| '12': 0, | |
| '13': 0, | |
| '14': 0, | |
| '15': 0, | |
| '16': 0, | |
| '17': 0, | |
| '18': 9, | |
| '19': 39, | |
| '20': 13, | |
| '21': 0, | |
| '22': 0, | |
| '23': 0, | |
| '24': 0, | |
| '25': 4, | |
| '26': 3, | |
| '27': 6, | |
| '28': 2, | |
| '29': 0, | |
| '30': 0, | |
| '31': 0, | |
| }, | |
| '6': { | |
| '1': 0, | |
| '2': 0, | |
| '3': 0, | |
| '4': 1, | |
| '5': 0, | |
| '6': 1, | |
| '7': 0, | |
| '8': 5, | |
| '9': 6, | |
| '10': 0, | |
| '11': 0, | |
| '12': 0, | |
| '13': 0, | |
| '14': 1, | |
| '15': 2, | |
| '16': 7, | |
| '17': 0, | |
| '18': 0, | |
| '19': 0, | |
| '20': 0, | |
| '21': 0, | |
| '22': 0, | |
| '23': 0, | |
| '24': 1, | |
| '25': 0, | |
| '26': 1, | |
| '27': 2, | |
| '28': 1, | |
| '29': 3, | |
| '30': 12, | |
| }, | |
| '7': { | |
| '1': 0, | |
| '2': 0, | |
| '3': 3, | |
| '4': 0, | |
| '5': 3, | |
| '6': 2, | |
| '7': 0, | |
| '8': 0, | |
| '9': 2, | |
| '10': 0, | |
| '11': 0, | |
| '12': 0, | |
| '13': 0, | |
| '14': 2, | |
| '15': 2, | |
| '16': 2, | |
| '17': 5, | |
| '18': 0, | |
| '19': 0, | |
| '20': 0, | |
| '21': 0, | |
| '22': 1, | |
| '23': 0, | |
| '24': 0, | |
| '25': 3, | |
| '26': 3, | |
| '27': 0, | |
| '28': 0, | |
| '29': 6, | |
| '30': 0, | |
| '31': 14, | |
| }, | |
| '8': { | |
| '1': 0, | |
| '2': 0, | |
| '3': 0, | |
| '4': 6, | |
| '5': 1, | |
| '6': 4, | |
| '7': 2, | |
| '8': 2, | |
| '9': 9, | |
| '10': 10, | |
| '11': 1, | |
| '12': 1, | |
| '13': 0, | |
| '14': 0, | |
| '15': 0, | |
| '16': 2, | |
| '17': 0, | |
| '18': 0, | |
| '19': 0, | |
| '20': 7, | |
| '21': 4, | |
| '22': 0, | |
| '23': 0, | |
| '24': 0, | |
| '25': 0, | |
| '26': 0, | |
| '27': 0, | |
| '28': 5, | |
| '29': 12, | |
| '30': 6, | |
| '31': 0, | |
| }, | |
| '9': { | |
| '1': 0, | |
| '2': 1, | |
| '3': 0, | |
| '4': 0, | |
| '5': 5, | |
| '6': 0, | |
| '7': 1, | |
| '8': 3, | |
| '9': 0, | |
| '10': 0, | |
| '11': 0, | |
| '12': 1, | |
| '13': 5, | |
| '14': 1, | |
| '15': 1, | |
| '16': 1, | |
| '17': 0, | |
| '18': 2, | |
| '19': 0, | |
| '20': 1, | |
| '21': 0, | |
| '22': 1, | |
| '23': 0, | |
| '24': 2, | |
| '25': 13, | |
| '26': 20, | |
| '27': 0, | |
| '28': 5, | |
| '29': 0, | |
| '30': 0, | |
| }, | |
| '10': { | |
| '1': 0, | |
| '2': 3, | |
| '3': 0, | |
| '4': 0, | |
| '5': 1, | |
| '6': 0, | |
| '7': 0, | |
| '8': 0, | |
| '9': 0, | |
| '10': 0, | |
| '11': 0, | |
| '12': 0, | |
| '13': 0, | |
| '14': 0, | |
| '15': 0, | |
| '16': 0, | |
| '17': 0, | |
| '18': 0, | |
| '19': 0, | |
| '20': 0, | |
| '21': 0, | |
| '22': 0, | |
| '23': 0, | |
| '24': 0, | |
| '25': 0, | |
| '26': 0, | |
| '27': 0, | |
| '28': 4, | |
| '29': 0, | |
| '30': 0, | |
| '31': 0, | |
| }, | |
| '11': { | |
| '1': 0, | |
| '2': 0, | |
| '3': 0, | |
| '4': 0, | |
| '5': 0, | |
| '6': 0, | |
| '7': 0, | |
| '8': 0, | |
| '9': 0, | |
| '10': 3, | |
| '11': 4, | |
| '12': 2, | |
| '13': 0, | |
| '14': 0, | |
| '15': 10, | |
| '16': 0, | |
| '17': 0, | |
| '18': 0, | |
| '19': 0, | |
| '20': 3, | |
| '21': 0, | |
| '22': 7, | |
| '23': 1, | |
| '24': 0, | |
| '25': 0, | |
| '26': 0, | |
| '27': 1, | |
| '28': 2, | |
| '29': 0, | |
| '30': 0, | |
| }, | |
| '12': { | |
| '1': 1, | |
| '2': 0, | |
| '3': 0, | |
| '4': 0, | |
| '5': 1, | |
| '6': 3, | |
| '7': 11, | |
| '8': 1, | |
| '9': 0, | |
| '10': 1, | |
| '11': 12, | |
| '12': 1, | |
| '13': 0, | |
| '14': 0, | |
| '15': 1, | |
| '16': 0, | |
| '17': 0, | |
| '18': 3, | |
| '19': 0, | |
| '20': 1, | |
| '21': 2, | |
| '22': 1, | |
| '23': 0, | |
| '24': 0, | |
| '25': 0, | |
| '26': 0, | |
| '27': 2, | |
| '28': 0, | |
| '29': 0, | |
| '30': 0, | |
| '31': 1, | |
| }, | |
| }, | |
| '2020': { | |
| '1': { | |
| '1': 3, | |
| '2': 5, | |
| '3': 1, | |
| '4': 2, | |
| '5': 4, | |
| '6': 5, | |
| '7': 1, | |
| '8': 2, | |
| '9': 7, | |
| '10': 2, | |
| '11': 0, | |
| '12': 1, | |
| '13': 1, | |
| '14': 9, | |
| '15': 3, | |
| '16': 2, | |
| '17': 1, | |
| '18': 4, | |
| '19': 2, | |
| '20': 2, | |
| '21': 1, | |
| '22': 1, | |
| '23': 1, | |
| '24': 8, | |
| '25': 18, | |
| '26': 2, | |
| '27': 2, | |
| '28': 4, | |
| '29': 1, | |
| '30': 1, | |
| '31': 3, | |
| }, | |
| '2': { | |
| '1': 3, | |
| '2': 1, | |
| '3': 1, | |
| '4': 3, | |
| '5': 1, | |
| '6': 2, | |
| '7': 1, | |
| '8': 1, | |
| '9': 2, | |
| '10': 2, | |
| '11': 1, | |
| '12': 1, | |
| '13': 2, | |
| '14': 1, | |
| '15': 2, | |
| '16': 4, | |
| '17': 0, | |
| '18': 0, | |
| '19': 2, | |
| '20': 1, | |
| '21': 1, | |
| '22': 0, | |
| '23': 0, | |
| '24': 1, | |
| '25': 0, | |
| }, | |
| }, | |
| }, | |
| }; | |
| const ranking = []; | |
| let tmpCount = 0; | |
| let tmpStart = null; | |
| for (const y of Object.keys(data.data)) { | |
| const year = data.data[y]; | |
| for (const m of Object.keys(year)) { | |
| const month = year[m]; | |
| for (const d of Object.keys(month)) { | |
| const day = month[d]; | |
| const display = `${y}/${m}/${d}`; | |
| if (day > 0) { | |
| if (tmpCount++ === 0) { | |
| tmpStart = display; | |
| } | |
| } else { | |
| if (tmpCount > 0) { | |
| ranking.push({ | |
| count: tmpCount, | |
| start: tmpStart, | |
| end: display, | |
| }); | |
| tmpCount = 0; | |
| tmpStart = null; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ranking.sort((a, b) => b.count - a.count); | |
| console.timeEnd(); | |
| console.log(ranking); |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Example Result: