如何使用JavaScript在JSON文件中按ID查找对应数据?
JavaScript按ID检索JSON数据实现方案
你的JSON结构本身以ID作为顶层键,不需要做遍历查找,直接按键取值即可,实现步骤如下:
- 先把JSON内容解析为JS可操作的对象,如果数据源本身已经是JS对象可以跳过解析步骤
- 编写查询函数,统一ID类型后做存在性校验,返回对应结果
完整示例代码
// 原始JSON数据,若从接口/文件读取直接替换此处即可 const rawJsonData = `{ "1": { "name": "some random name 1", "nickname": "some random nickname 1" }, "2": { "name": "some random name 2", "nickname": "some random nickname 2" } }`; // 解析为JS对象存储 const dataSource = JSON.parse(rawJsonData); /** * 按ID查询数据 * @param {string|number} id 目标数据ID * @returns {object|null} 匹配到的数据,无匹配返回null */ function queryDataById(id) { // 统一转字符串,避免传数字ID时和JSON的字符串键不匹配 const formatId = String(id); return dataSource.hasOwnProperty(formatId) ? dataSource[formatId] : null; }
使用方式
直接调用函数,把返回结果存入变量即可:
// 查询ID为1的数据存入变量 const dataOfId1 = queryDataById(1); console.log(dataOfId1); // { name: "some random name 1", nickname: "some random nickname 1" } // 查询ID为2的数据存入变量 const dataOfId2 = queryDataById("2"); console.log(dataOfId2); // { name: "some random name 2", nickname: "some random nickname 2" } // 查询不存在的ID const notExistData = queryDataById(999); console.log(notExistData); // null
注意事项
- 不要用遍历整个对象的方式查数据,这种ID做键的结构直接按键取值时间复杂度是O(1),性能远高于遍历
- 统一ID类型的步骤不要省,很多人踩坑传数字ID查不到,就是因为JSON解析后键都是字符串类型
- 加存在性判断是为了避免拿到
undefined,后续业务代码做非空判断时逻辑更统一
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

