【发布时间】:2021-11-22 09:26:00
【问题描述】:
我有一个对象数组:
array = [
{
name:'alex',
number:36783712773
},
{
name:'gabe',
number:99938873,
},
and so on like this
]
我知道二分搜索的基本概念及其工作原理,但互联网上的大多数示例都处理数字数组,因此我无法弄清楚在对象数组中按姓名和电话进行搜索。
我可以从后端进行搜索,但我不想对可以在 javascript 中轻松处理的事情进行不必要的 HTTP 调用。
提前致谢。
【问题讨论】:
-
您必须选择
name或number对特定数组进行二分搜索,然后您要搜索的数组必须 首先按该值排序。如果你不能满足这个要求(如果你想按 2 个不同的字段搜索,你需要维护 2 个单独的排序数组),那么你可能是barking up the wrong tree。 -
好吧,假设我只想按名称搜索,如果我理解正确,我必须先按名称排序,然后像在简单的二分搜索函数中那样进行比较
-
好吧,谢谢大家,我想我得到了需要的东西,再次感谢您的时间和技巧。
-
请注意@trincot 的分析不幸被测试用例的错误实现所破坏。他的二分搜索比
.find更快,即使是1000个条目,一旦修复。 -
投票重新打开,虽然这要求提供教程参考,但它也要求直接帮助。来自 trincot 的答案显示了一种有用的方法。虽然问题应该显示了 OP 的尝试,但如果没有,这仍然是一个合理的问题。
标签: javascript arrays algorithm object binary-search