如果所有关键字都匹配,如何将值推送到数组?

时间:2017-06-09 14:13:56

标签: javascript arrays algorithm search

我刚刚为我的问题创建了一个基本用例,我遇到了问题,我将从客户端获得searchStr个关键字数组对象,我将检查所有搜索关键字是否只与行匹配而不是匹配到{{1 }}。使用下面的代码,它总是返回results的空数组,如何解决这个问题或者更好的方法来实现这个任务?

search.js

results

1 个答案:

答案 0 :(得分:0)

您没有在searchStrArray中搜索TEXT;试试这个:

function matchSearchStr(line, searchStrArray) {
    for (var i = 0; i < searchStrArray.length; i++) {

        if (line.toLowerCase().indexOf(searchStrArray[i].text.toLowerCase()) != -1) {
            results.push({
                filename: "file",
                value: line
            });
           console.log(results);
        }

    }

}

---- @aorfevre回复的所有者编辑

这里是我想要实现的实际代码现在我将对象数组chnaged到数组字符串,在这种情况下它会发送所有结果。

    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) {

              console.log(searchStr);
              for(var i=0; i<searchStr.length; i++)  {
                if (line.toLowerCase().indexOf(searchStr[i].toLowerCase()) != -1)
           var messageDateInfo = line.split('|')[0].replace(/[\[\]']+/g,'');
                messageDateInfo = new Date( messageDateInfo ).getTime();
                searchStartDate = new Date( searchStartDate ).getTime();
                searchEndDate = new Date( searchEndDate ).getTime();
                if( messageDateInfo - searchStartDate > 0 && searchEndDate - messageDateInfo > 0){
                  // console.log("message date is within this time range");
                  results.push({
                    filename:logfile.filename,
                    value:line
                  });
                }
             }
          });
                  done();
        }
        , function (err) {
            if (err) {
                console.log('error', err);
            }
           readStream.on('end',function(){
            callback(results);
           });
           results = [];
        });
      }

    }