JSFiddle - React, Tailwind, and code Playground

by Prathameshsb

JavaScript

/**
 * Implements a simple cache query handler using a hashmap.
 * @param {string[][]} cache_entries - Array of [timestamp, key, value]
 * @param {string[][]} queries - Array of [key, timestamp] queries
 * @return {string[]} - Array of corresponding values
 */
function cacheQueryHandler(cache_entries, queries) {
    // Step 1: Preprocess cache_entries into a Map
    const cacheMap = new Map();

    for (let [timestamp, key, value] of cache_entries) {
        if (!cacheMap.has(key)) {
            cacheMap.set(key, new Map());
        }
        cacheMap.get(key).set(timestamp, value);
    }

    // Step 2: Process queries and retrieve values
    let results = [];
    
    for (let [key, timestamp] of queries) {
        if (cacheMap.has(key) && cacheMap.get(key).has(timestamp)) {
            results.push(cacheMap.get(key).get(timestamp));
        } else {
            results.push("-1"); // If not found, return "-1"
        }
    }

    return results;
}

// Example Usage:
const cache_entries = [
    ["12:30:22", "a2er580", "125"],
    ["09:07:47", "io09ju56", "341"],
    ["01:23:09", "a2er580", "764"]
];

const queries = [
    ["a2er580", "01:23:09"],  // Expected: "764"
    ["io09ju56", "09:07:47"]  // Expected: "341"
];


console.log(cacheQueryHandler(cache_entries, queries)); 
// Output: ["764", "341"]