如何使用JavaScript有效地搜索数组中的特定值

时间:2017-07-04 16:10:21

标签: javascript arrays database

我想知道如何使用JavaScript搜索大数组。

假设我们有一个由代表企业的元素组成的数组。数组中有几千个元素,它们是有时也有数组的对象。

在每个元素中都是一个关键,例如称为此类Makefile.PL的类别。现在我只想找到具有如下类别的数组元素:

category: ["attr1", "attr2", "attr3"]

问题是数组中元素的其他键有时也有一个属性,其中“Restaurant”在名称后跟其他内容,例如“RestaurantPrice”所以

category: ["Restaurant"]

不能正常工作,因为它会返回“餐厅”这个词的所有出现或者我错了吗?

如果不是,我应该如何搜索数组中的特定内容?

2 个答案:

答案 0 :(得分:0)

如果categories["foobar", "foo"]

之类的数组

categories.indexOf("foo")会返回1 foobar 会被忽略。

另一个问题是how to find elements efficient?

这取决于,如果您的设置是静态的,您可以预先构建并缓存某种索引,如:

var categoriesMap = {
  foobar: [1, 2, 4],
  foo: [1, 5, 7]
}

数组将表示项目的索引,其中包括给定的类别。

答案 1 :(得分:0)

如果您的密钥是唯一的,请尝试使用HashMaps。