
但是如果需要经常查找,那最好建立一个查找表,比如
function createLookMap(field) {
var map = {}
for (var i = 0i <jsonArr.lengthi++) {
var item = jsonArr[i]
var key = item[field]
map[field] = item
}
return map
}
var idMap = createLookMap("id")
在查找的时候只需要直接从 idMap 中取就行了
var id = needId()
var obj = idMap[id]// the found object or undefined
如果还需要按 name 来查找,可以再建一个查找表
var nameMap = creaetLookMap("name")
如果 name 不是唯一的,那创建查找表的时候就要耍点手段,保存一个数组而不是一个对象
function createLookMap(field) {
var map = {}
for (var i = 0i <jsonArr.lengthi++) {
var item = jsonArr[i]
var key = item[field]
var list = map[key]
fi (!list) {
map[key] = list = []
}
list.push(item)
}
return map
}
<html><head>
<meta http-equiv="Content-Type" content="text/htmlcharset=gbk"/>
<script type="text/javascript">
var smsTypeDesc = {"4":"回访短信","3":"邮件短信","aa":"测试短信"}
function EnumaKey(){
for(var key in smsTypeDesc){
alert(key)
}
}
function GetVal(){
var key = prompt("请输入要查询的key","4")
if("undefined"==typeof(smsTypeDesc)) return
if("undefined"==typeof(smsTypeDesc[key])){
alert("输入的key:"+key+", 在json对象中不存在!")
return
}
alert("您输入的key是:"+key + ",该key所对应的值是:"+smsTypeDesc[key])
}
function GetValByKey(){
alert(smsTypeDesc.aa)
}
</script>
</head>
<body>
Json对象:<br/>
<pre>
var smsTypeDesc = {"4":"回访短信","3":"邮件短信","aa":"测试短信"}
</pre>
<input type="button" onclick="EnumaKey()" value="遍历smsTypeDesc所有key"/>
<input type="button" onclick="GetVal()" value="获取smsTypeDesc动态指定key的值"/>
<input type="button" onclick="GetValByKey()" value="获取smsTypeDesc key aa 所对应的值"/>
</body>
</html>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)