I recently had a programming interview with a Silicon Valley tech company and wanted some different opinions on one of the problems they had me solve and how others might complete it. Essentially, given an array of objects:
const events = [ {'category': 'Bug', 'date': '26.07.22', 'resolved': false}, {'category': 'Breach', 'date': '26.07.22', 'resolved': false}, {'category': 'Bug', 'date': '24.07.22', 'resolved': true}, {'category': 'Bug', 'date': '24.07.22', 'resolved': true}, {'category': 'Bug', 'date': '24.07.22', 'resolved': false}, {'category': 'Restart', 'date': '22.07.22', 'resolved': true}, {'category': 'Breach', 'date': '21.07.22', 'resolved': false}]
Return another array of objects to the user that list the unique category names and how many of them were found in the original array, like so:
[{category: 'Breach', count: 2}, {category: 'Bug', count: 4}, {category: 'Restart', count: 1}]
How I managed it:
let categoryArray = []; for (let i = 0; i < events.length; i++) { categoryArray[i] = events[i].category; } categoryArray.sort(); let count = 1; let finalObjectArray = []; for (let i = 0; i < categoryArray.length; i++) { let blankObject = { category: "", count: "" }; let curr = categoryArray[i]; let next = categoryArray[i + 1]; if (curr === next) { count++; } else { blankObject.category = categoryArray[i]; blankObject.count = count; finalObjectArray.push(blankObject); count = 1; } }