如果你只是偶尔查一次,那就遍历吧,用 [].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 }