I'm trying to solve the Reorder Data in Log Files algorithm.
You have an array of logs. Each log is a space delimited string of words.
For each log, the first word in each log is an alphanumeric identifier. Then, either:
Each word after the identifier will consist only of lowercase letters, or; Each word after the identifier will consist only of digits. We will call these two varieties of logs letter-logs and digit-logs. It is guaranteed that each log has at least one word after its identifier.
Reorder the logs so that all of the letter-logs come before any digit-log. The letter-logs are ordered lexicographically ignoring identifier, with the identifier used in case of ties. The digit-logs should be put in their original order.
Return the final order of the logs.
Example:
Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]
My idea is having a map for the digits and one for the letters. I have done it. Then, I would need to sort the digits and letters and add all the sorted letters to my answer array and all the sorted digits to my answer array.
var reorderLogFiles = function(logs) {
    if(!logs || logs.length === 0)
        return [];
    
    let numbers = {
        '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6,
        '7': 7, '8': 8, '9': 9
    };
    let digits = new Map();
    let letters = new Map();
    
    for(let i=0; i<logs.length; i++) {
        const log = logs[i].split(" ");
        if(numbers[log[1]] !== undefined) 
            digits.set(log[0], log.splice(1, log.length));
        else
            letters.set(log[0], log.splice(1, log.length));
    }
    
    // How can I sort letter and digits?
    
    let ans = [];
    for(const [key, value] of sortedLetters) {
        const temp = key + " " + value.join(" ");
        ans.push(temp);
    }
    for(const [key, value] of sortedDigits) {
        const temp = key + " " + value.join(" ");
        ans.push(temp);
    }
    
    return ans;
};
 
    