【问题标题】:store easy retrievable pairs from both key and vaule in Javascript从 Javascript 中的键和值存储易于检索的对
【发布时间】:2022-06-11 07:01:31
【问题描述】:

我正在尝试找到一种有效的方法来存储键:值对,以便您可以快速找到另一个值(虽然两者都是唯一的)。

例如:假设我们想要存储对“unique_id: email”...并且我希望能够从两个值中的任何一个中获取另一个值。什么是更少资源消耗(RAM 和 calc)的方法?

节省内存解决方案:

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.

高效的研究解决方案?

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"];

现在...在第二种情况下,我们正在消耗更多的内存,在第一种情况下,我们的研究效率较低(或者是否有某种算法与索引研究一样快?)。 对于我的应用程序,我实际上有超过 2 个唯一值(例如 - 并且只是一个示例 ID、gmail、microsoftid、passport_no)。当然,对于第二种解决方案,我使用的内存要多得多,而对于我的应用程序来说,内存使用至关重要。

那么,这样做的正确方法是什么?是否有某种 js 类可以做到这一点?

【问题讨论】:

    标签: javascript object search memory-efficient


    【解决方案1】:

    您可以使用键值向量,因此它对于键和值都是 O(n)。
    但是原生对象有 O(1) 和 O(n),所以没什么大不了的。 你也可以做一个三叉树,当左边都小于,右边都大于,中间一个大于,另一个小于(或4ry树,更好的搜索),但不知道如何平衡它.

    【讨论】:

      猜你喜欢
      • 2012-05-21
      • 2021-01-01
      • 2011-08-12
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 2013-11-01
      • 2023-04-08
      相关资源
      最近更新 更多