为了账号安全,请及时绑定邮箱和手机立即绑定

json数组 根据动态key获得value 有什么好的方法?

json数组 根据动态key获得value 有什么好的方法?

海绵宝宝撒 2019-04-08 09:21:47
json数组如下:javascriptvarjsonArr=[{"id":"1","name":"A1"},{"id":"2","name":"A2"},{"id":"3","name":"A3"},{"id":"4","name":"A4"},{"id":"5","name":"A5"}]现在有个动态key1或者2如何根据我的key获得对应的value值除了简单的循环forin外有没有更好的方法?因为我个人认为如果json数组数据量庞大的情况下很耗性能。希望有大牛来指点指点。
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

如果你只是偶尔查一次,那就遍历吧,用[].every还是很容易写的,或者用for...in也不难。
但是如果需要经常查找,那最好建立一个查找表,比如
javascriptfunctioncreateLookMap(field){
varmap={}
for(vari=0;ivaritem=jsonArr[i]
varkey=item[field]
map[field]=item
}
returnmap
}
varidMap=createLookMap("id")
在查找的时候只需要直接从idMap中取就行了
javascriptvarid=needId()
varobj=idMap[id]//thefoundobjectorundefined
如果还需要按name来查找,可以再建一个查找表
javascriptvarnameMap=creaetLookMap("name")
如果name不是唯一的,那创建查找表的时候就要耍点手段,保存一个数组而不是一个对象
javascriptfunctioncreateLookMap(field){
varmap={}
for(vari=0;ivaritem=jsonArr[i]
varkey=item[field]
varlist=map[key]
fi(!list){
map[key]=list=[]
}
list.push(item)
}
returnmap
}
注:程序未实际运行验证,可能会有一些小问题
                            
查看完整回答
反对 回复 2019-04-08
?
www说

TA贡献1775条经验 获得超8个赞

如果真的量很大,并且反复用的话,你可以把数据结构改成:
varjsonDic=[
"1":{"id":"1","name":"A1"},
"2":{"id":"2","name":"A2"},
"3":{"id":"3","name":"A3"},
"4":{"id":"4","name":"A4"},
"5":{"id":"5","name":"A5"}
]
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 549 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信