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

发布于2021-12-18 18:13:26
2个回答
admin
网友回答2021-12-18
json 数组也是数组 //1、var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]";var jsonarray = eval('('+jsonstr+')'); var arr = { "name" : $('#names').val(), "value" : $('#values').val() }jsonarray.push(arr);//2、var json={};// 定义一个json对象 json.array1=["2","4"];// 增加一个新属性,此属性是数组 json.array1[json.array1.length]='6';// 数组追加一个元素 alert(json.array1)
admin
网友回答2021-12-18
如果你只是偶尔查一次,那就遍历吧,用 [].every 还是很容易写的,或者用 for ... in 也不难。 但是如果需要经常查找,那最好建立一个查找表,比如 function createlookmap(field) { var map = {} for (var i = 0; i < jsonarr.length; i++) { 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 = 0; i < jsonarr.length; i++) { var item = jsonarr[i] var key = item[field] var list = map[key] fi (!list) { map[key] = list = [] } list.push(item) } return map }

回到
顶部