Javascript 当您读取文件(fs)的每一行并获得结果时,如何匹配多个字符串关键字?
基本上,我有来自客户端的多个搜索字符串,我必须在文件的每一行中找到这些字符串,如果该行与用户输入的所有字符串匹配,则将该行推送到结果,下面的代码将发送空的Javascript 当您读取文件(fs)的每一行并获得结果时,如何匹配多个字符串关键字?,javascript,arrays,node.js,search,fs,Javascript,Arrays,Node.js,Search,Fs,基本上,我有来自客户端的多个搜索字符串,我必须在文件的每一行中找到这些字符串,如果该行与用户输入的所有字符串匹配,则将该行推送到结果,下面的代码将发送空的结果数组 如何循环搜索每个搜索字符串并找到匹配项,循环完成后,将所有匹配行推送到结果中 searchLogs.js /* Example client input var searchStr = [{"text":"457383",{"text":"requestPdr"}] */ async.eachSeries(fil
结果数组
如何循环搜索每个搜索字符串并找到匹配项,循环完成后,将所有匹配行推送到结果中
searchLogs.js
/* Example client input
var searchStr = [{"text":"457383",{"text":"requestPdr"}]
*/
async.eachSeries(filesData.logFiles, function(logfile, done) {
// read file
readStream = fs.createReadStream('./logs/' + filesData.searchEnv + '/' + logfile.filename, 'utf8')
readStream.pipe(split())
.on('data', function(line) {
for (var i = 0; i < searchStr.length; i++) {
if (line.toLowerCase().indexOf(searchStr[i].toLowerCase()) != -1)
results.push({
filename: logfile.filename,
value: line
});
}
});
},
function(err) {
if (err) {
console.log('error', err);
}
readStream.on('end', function() {
callback(results);
});
results = [];
});
/*示例客户端输入
var searchStr=[{“text”:“457383”,{“text”:“requestPdr”}]
*/
async.eachSeries(filesData.logFiles,函数(logfile,done){
//读取文件
readStream=fs.createReadStream('./logs/'+filesData.searchEnv+'/'+logfile.filename,'utf8')
readStream.pipe(split())
.on('数据',函数(行){
对于(var i=0;i
尝试更改
searchStr[i].toLowerCase()
到
searchStr[i]['text'].toLowerCase()
我想有两种情况。一种是代码抛出错误,但将err
保留为空,另一种是if语句永远不为真。我认为后者更可能是真的,但你能检查并发布你的结果吗?searchStr
看起来像你提供的示例吗?如果是这样,它怎么有toLowerCase
方法?searchStr[i]是一个对象,不是吗?