扫码关注官方订阅号
如何快速查找json数据呢如下图所示,已知id,查找name值
假设你的原始数据是这样的:
var arr = [{ id:1, name:'a' },{ id:2, name:'b' }];
现在你可以一次性的转换一下数据格式为:
var obj = {}; arr.forEach(function (v,i) { obj[v.id] = v; }); obj = { 1:{ id:1, name:'a', }, 2:{ id:2, name:'b' } };
然后就可以根据id,直接拿到name了
obj[id].name
其实上面的效率还是比较低的。
既然已经循环了,就直接从循环里那对应的字段
function getNameById(id) { var name = ''; arr.forEach(function (v,i) { if (v.id==id) { name = v.name; console.log(i); return; } }); return name; }
上面两种方法的区别就是,如果不停的重复获取值,选择第一种方法,因为只需要循环一次,后面不需要再循环了。第二种方法每次获取都要重新循环一遍
赞同楼上的说法,改变数据结构。把id变成key。把其他的东西变成value如果不需要其他的可以直接把name变成value
fn(id) { return arr.filter(o => o.id === id)[0].name; // id一定有对应值的情况 }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
假设你的原始数据是这样的:
现在你可以一次性的转换一下数据格式为:
然后就可以根据id,直接拿到name了
其实上面的效率还是比较低的。
既然已经循环了,就直接从循环里那对应的字段
上面两种方法的区别就是,如果不停的重复获取值,选择第一种方法,因为只需要循环一次,后面不需要再循环了。
第二种方法每次获取都要重新循环一遍
赞同楼上的说法,改变数据结构。把id变成key。把其他的东西变成value如果不需要其他的可以直接把name变成value