Estoy tratando de encontrar una manera eficiente de almacenar pares clave: pares de valores para que pueda encontrar rápidamente el otro valor (mientras que ambos son únicos).
por ejemplo: digamos que queremos almacenar pares "unique_id: email"... y quiero poder obtener el otro valor de cualquiera de los dos valores. ¿Cuál es la forma de hacerlo que consume menos recursos (tanto RAM como calc)?
Solución de ahorro de memoria:
const data = {"1": "user1@email.com", "2": "user2@email.com", "3": "user3@email.com"} var email1 = data['1']; //fast research var user1 = data.find("user1@email.com") //slow research algorithm (find is some function that search through the item... probably in a more inefficient way than the above index-research.solución de investigación eficiente?
const emails = {"1": "user1@email.com", "2": "user2@email.com", "3": "user3@email.com"} const ids = { "user1@email.com": "1", "user2@email.com": "2", "user3@email.com": "3" } var email1 = emails['1']; var id1 = ids[ "user1@email.com"];Ahora... en el segundo caso estamos consumiendo más memoria, en el primero tenemos una investigación menos eficiente (¿o hay algún algoritmo que sea tan rápido como index-research?). Para mi aplicación, en realidad tengo más de 2 valores únicos (como -y es solo un ejemplo-id, gmail, microsoftid, passport_no). Por supuesto, con la segunda solución estoy usando mucha más memoria, y para mi aplicación el uso de la memoria es crucial.
Entonces, ¿cuál es la forma correcta de hacer esto? ¿Hay algún tipo de clase js que haga esto?
Podría usar un vector de valores-clave, por lo que será O(n), tanto para una clave como para un valor.
Pero el objeto nativo tiene O(1) y O(n), por lo que no es gran cosa. También podrías hacer un árbol ternario, cuando la izquierda es menor que, la derecha es mayor que, el medio es uno es mayor, el otro es menor (o árbol 4ry, para una mejor búsqueda), pero no sé cómo equilibrarlo bien .