我正在使用带有标题的数组。每个标题索引对应于数据库中的一个 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/