如何快速查找json数据呢

如何快速查找json数据呢
如下图所示,已知id,查找name值
图片描述

阅读 16.8k
3 个回答

假设你的原始数据是这样的:

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一定有对应值的情况
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题