【问题标题】:How to efficiently search specific values in array using JavaScript如何使用 JavaScript 有效地搜索数组中的特定值
【发布时间】:2017-07-04 16:10:21
【问题描述】:

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

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

在每个元素中都有一个键,例如称为类似 category: ["attr1", "attr2", "attr3"] 的类别。现在我只想找到具有如下类别的数组元素:

category: ["Restaurant"]

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

if(array[i].categories != null && 
array[i].categories.indexOf("Restaurant") != -1) {
    do something
}

无法正常工作,因为它会返回所有出现的“餐厅”一词,还是我错了?

如果不是,我应该如何在数组中搜索特定的东西?

【问题讨论】:

  • String.indexOf 匹配子字符串。 Array.indexOf 匹配数组中的(整个)元素。你甚至没有测试这个,是吗?
  • 甚至不知道它的存在

标签: javascript arrays database


【解决方案1】:

如果categories 是类似["foobar", "foo"] 的数组

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

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

这取决于,如果您的集合是静态的,您可以预建和缓存某种索引,例如:

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

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

【讨论】:

    【解决方案2】:

    如果您的键是唯一的,请尝试使用 HashMap。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 2017-07-22
      • 1970-01-01
      • 2013-10-02
      • 2018-09-22
      • 2013-10-10
      相关资源
      最近更新 更多