js中存放的数据格式类似:
[
["id":1,"name":"李明","brief":"简介111"],
["id":2,"name":"李红","brief":"简介222"],
["id":3,"name":"张三","brief":"简介333"]
]
数据量大概几万条
现在有需求要能实时快速根据name快速查找到那一条的值,类似mysql中的where name=xxx,对速度要求高,所以不能调接口,调接口就慢了,
用什么查找算法实现这个需求响应速度最快?
js中存放的数据格式类似:
[
["id":1,"name":"李明","brief":"简介111"],
["id":2,"name":"李红","brief":"简介222"],
["id":3,"name":"张三","brief":"简介333"]
]
数据量大概几万条
现在有需求要能实时快速根据name快速查找到那一条的值,类似mysql中的where name=xxx,对速度要求高,所以不能调接口,调接口就慢了,
用什么查找算法实现这个需求响应速度最快?
万级数据使用 data.find(item=>item.name === 'xxx')
不至于出现延迟,如果觉得太慢,可以使用 map 数据结构,但是需要你先整理出来key键,所以要么在后台返回的时候就以这样的格式:
const data = [
["李明", {"id":1,"name":"李明","brief":"简介111"}],
["李红", {"id":2,"name":"李红","brief":"简介222"}],
["张三", {"id":3,"name":"张三","brief":"简介333"}],
]
const mapData = new Map(data)
要不然就是使用js去整理:
const data = [
{"id":1,"name":"李明","brief":"简介111"},
{"id":2,"name":"李红","brief":"简介222"},
{"id":3,"name":"张三","brief":"简介333"}
]
const mapData = new Map(data.map(item=>{
return [item.name, item]
}))
最后使用都是
mapData.get("张三")
// 直接返回 {"id":1,"name":"李明","brief":"简介111"}
如果是全匹配, 最简单的, 遍历一次将name
作为key, value为你的数据数组存放起来, 匹配就可以了. 如果不是全匹配支持模糊的话, 就只能自己写, 根据name的值生成一个树, 再根据你的查询条件去寻找
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.6k 阅读✓ 已解决
思路可以是一样的嘛,你维护一个name的索引..
比如一个这样的结构
let index={"李明":[0,1]}; //"name":[下标数组]
那么你的查询就变成了
index['李明'],然后按下标去找就好了