中的结果
我是JavaScript的新手,并努力提出解决方案。我有一个包含JSON格式行的文件。在以下代码中,我将JSON转换为对象并修剪了每行的空白并返回输出。
现在,我不仅需要删除白色空间,而且还需要在文件的每行中搜索一个字符串(由用户提供并传递为变量(,如果找到字符串,则应返回整个行。
我尝试了.includes(req.params.msg)
,但无法正确。
get(req, res) {
let arry = [];
const text = (fs.readFileSync('./pretty.out'));
arry = (text.toString().split('n'));
let wat = [];
arry.forEach(i => {
if (!!i.trim()) {
wat.push(JSON.parse(i));
}
});
res.json(wat);
}
文件的内容是
{"foo" : "bar","bar" : "sit"}
{"foo" : "lorem","bar" : "ipsum"}
{"foo" : "dolor","bar" : "amet"}
如果用户输入sit
,则输出应该是
{"foo" : "bar","bar" : "sit"}
// using fs.readFileSync is fine, but only during process boot time
// if the data is dynamic you'll need to read it async
const data = (fs.readFileSync('./pretty.out'), 'utf8')
.split('n')
.filter(line => line.trim())
.map(line => JSON.parse(line));
// input should use post requests
post(req, res) {
const query = req.body;
let results = data.filter(d => d.bar === query);
res.json(results);
}
看起来您现在以数组格式获得了它,所以这应该很好:
// To return multiple query matches:
function search(query){
return arr.filter(function(item){
return JSON.stringify(item).match(query) !== null;
})
}
// To return single (first) query match:
function search(query){
return arr.find(function(item){
return JSON.stringify(item).match(query) !== null;
})
}
如果您不将其转换为JSON对象的数组,则可以使用:
function search(query){
return file.match(new RegExp("{.+"+query+".+}", "g"))
}
这是小提琴:https://jsfiddle.net/1cqacj3b/11/(修改以显示html