如何使用JavaScript高效地搜索数组中的特定值
我想知道如何使用JavaScript搜索大数组 假设我们有一个由表示业务的元素组成的数组。数组中有几千个元素,它们是有时也包含数组的对象 在这些元素中的每一个元素中都有一个键,例如名为category的键,看起来像这样的如何使用JavaScript高效地搜索数组中的特定值,javascript,arrays,database,Javascript,Arrays,Database,我想知道如何使用JavaScript搜索大数组 假设我们有一个由表示业务的元素组成的数组。数组中有几千个元素,它们是有时也包含数组的对象 在这些元素中的每一个元素中都有一个键,例如名为category的键,看起来像这样的类别:[“attr1”、“attr2”、“attr3”]。现在,我只想找到数组中具有如下类别的元素: category: ["Restaurant"] 问题是数组中元素的其他键有时也有一个属性,其中名称中的“Restaurant”后跟其他内容,例如“RestaurantPric
类别:[“attr1”、“attr2”、“attr3”]
。现在,我只想找到数组中具有如下类别的元素:
category: ["Restaurant"]
问题是数组中元素的其他键有时也有一个属性,其中名称中的“Restaurant”后跟其他内容,例如“RestaurantPrice”,所以
不会正常工作,因为它会返回所有出现的“餐厅”一词,还是我错了
如果不是,我应该如何在数组中搜索特定的内容?如果
类别
是类似[“foobar”,“foo”]
categories.indexOf(“foo”)
将返回1
,foobar将被忽略
另一个问题是如何找到高效的元素?
这取决于,如果您的集合是静态的,您可以预构建和缓存某种索引,如:
var categoriesMap = {
foobar: [1, 2, 4],
foo: [1, 5, 7]
}
数组将表示项目的索引,其中包括给定的类别。如果您的键是唯一的,请尝试使用哈希映射。
String.indexOf
匹配子字符串Array.indexOf
匹配数组中的(整个)元素。你甚至没有测试过这个,是吗?你甚至不知道它的存在
var categoriesMap = {
foobar: [1, 2, 4],
foo: [1, 5, 7]
}