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

 我来答
司马刀剑
高粉答主

2017-10-27 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7535万
展开全部
如果你只是偶尔查一次,那就遍历吧,用 [].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
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式