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}注:程序未实际运行验证,可能会有一些小问题
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"}]
添加回答
举报
0/150
提交
取消