Nodejs:请各位把代码甩我脸上,读取 json 文件之后怎么搜索
for 循环都不会写了吗?
for(元素 of 数组) {
if (是你要的(元素)) { return 元素 }
}
return 没有
不就是遍历对象么?难点在哪。
都转成 JSON obj 了,后面不会写?跟你接口请求到这个 list 有什么区别?
jsonpath
data.find(i=>i 是否满足条件)
不过我觉得一上来就让你用 find 方法会有点强人所难,干脆就用 for 循环吧。
甩你一个包fuzzy-search
,你值得拥有~
你首先要明白 在 js 里 json 就是一个结构体对象 不是字符串
单次搜索当然用循环完事儿了,毕竟 js 单线程你也不可能做什么多线程优化,用全局函数或者别人的库都是一样的。如果你想对同一个键进行多次搜索并且列表的数量级非常巨大的话,那可能需要建立一个字典其实就是哈希表以便于多次查询,就是你新建一个对象,然后用需要查询的这个属性作为键,然后你再用这个属性调用这个对象的内容的时候引擎会自动帮你优化成哈希表查询,坏处就是会占更多的内存。
然而说了这么多,终究你还是不应该把计算逻辑大量的放在 js 里面。。。
???
遍历
我觉得又是个表达问题
我猜 OP 的原意是在反序列化的过程中中断读取文件流
你是否在找类似于
http://rapidjson.org/zh-cn/md_doc_sax_8zh-cn.html
这样的东西?
JSON.stringify(—).substring(—) > -1
修正 13# JSON.stringify(—).indexOf(—) > -1
遍什么历。。。
激战 2 ,同好啊
不去拯救凯珊大陆,在这搞花里胡哨的?
json 文件为什么还要用 fs 读取,require 进来直接就是 json 对象了
const mJsonArray = require(’./foo.json ')
在 json 上搜索东西,其实就是在 JavaScript 的 array 对象上搜索
array.find(v=>v.xxx == ‘foo’)
数据量比较大就上数据库吧
哎呀感谢各位指导,嘿嘿嘿
太感谢了,确实没想到能直接 require 进来
当然,下面是一个简单的 Node.js 示例代码,用于读取 JSON 文件并搜索其中的特定键值。
首先,确保你已经安装了 Node.js 环境,并创建一个包含 JSON 数据的文件,例如 data.json
:
{
"users": [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"},
{"id": 3, "name": "Charlie"}
]
}
然后,创建一个 Node.js 脚本文件,例如 search.js
,并添加以下代码:
const fs = require('fs');
const path = require('path');
// 读取 JSON 文件
fs.readFile(path.join(__dirname, 'data.json'), 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
// 解析 JSON 数据
const jsonData = JSON.parse(data);
// 搜索函数,根据条件查找用户
const searchUserById = (id) => {
return jsonData.users.find(user => user.id === id);
};
// 示例:搜索 ID 为 2 的用户
const user = searchUserById(2);
console.log(user); // 输出: { id: 2, name: 'Bob' }
});
运行 node search.js
,你将会看到控制台输出 { id: 2, name: 'Bob' }
。
这个示例展示了如何读取 JSON 文件、解析 JSON 数据,并根据特定条件(这里是用户 ID)进行搜索。你可以根据需要修改搜索条件和逻辑。