javascript - 在 Javascript 数组中查找元素的有效方法

标签 javascript search complexity-theory big-o associative-array

我正在使用带有标题的数组。每个标题索引对应于数据库中的一个 id,其中包含该给定标题的 html。

假设我有一个包含其中一个标题的字符串。

title = "why-birds-fly";
titles[] // an array which contains all the titles

要使用字符串“title”来获取相应的 id,我可以这样做:

for (i = 0; i < titles.length-1; i++) {
  if (titles[i] == title)
    return i+1;
}

我可以使用的另一种方法是创建一个关联数组以及与标题数组完全相反的标题数组。也就是说,它使用字符串作为索引并返回数字。

titles_id {blah:0,why-birds-fly:1,blah2:2}

然后我可以通过以下方式访问 ID:

return titles_id[title]+1;

考虑到 CPU、内存等,什么最有效?

此外,如果我的逻辑完全错误,请告诉我。

谢谢 威廉

最佳答案

线性搜索方法有一个 complexity O(n),我认为关联数组方法的最坏情况可能是 O(log n),(如果 JS 引擎使用哈希并获取,最佳 情况可能是 O(1)没有碰撞)。这将取决于 JS 引擎通常如何实现 associative arrays/objects ,但您可以确定它会击败 O(n)。

因此,第二种方法会更快,但当然会使用更多内存。这是一个非常典型的trade off ,获得更快的速度,但使用更多的内存,只有您可以决定是否要进行该交易。

关于javascript - 在 Javascript 数组中查找元素的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/642046/

相关文章:

complexity-theory - 具有特殊指标的旅行商

android - 如何从条形码在线获取产品名称?

java - 有没有办法让我的地址栏的 JTextField 更大更 flex

javascript - 如何循环遍历对象并匹配对象中某个数字范围内的数字?

javascript - 单击按钮时显示更多元素?

search - Solr - 使用两个或多个单词的搜索仅使用第一个单词进行评分

java - 根据逻辑条件过滤数组的有效方法是什么?

algorithm - 渐近最坏情况运行时间。需要澄清一下

algorithm - 寻找复杂性的下限和上限

javascript - 如何在 jquery 上合计两个不同的下拉选项