Javascript 如何在Google Web脚本上向搜索结果中添加或和

Javascript 如何在Google Web脚本上向搜索结果中添加或和,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在开发一个谷歌Web应用程序Crud,它可以从谷歌表单数据中搜索数据(通过观看YouTube教程)。我正在努力获得多个搜索结果 例如,当我搜索APPLE时,当前代码仅给出包含APPLE的行的结果,当我搜索APPLE或ORANGE时,结果变为空(即使表格包含APPLE和ORANGE) 多次尝试后,我的搜索结果无法正常工作 function search(){ var searchinput = document.getElementById("searchinput").

我正在开发一个谷歌Web应用程序Crud,它可以从谷歌表单数据中搜索数据(通过观看YouTube教程)。我正在努力获得多个搜索结果

例如,当我搜索APPLE时,当前代码仅给出包含APPLE的行的结果,当我搜索APPLE或ORANGE时,结果变为空(即使表格包含APPLE和ORANGE)

多次尝试后,我的搜索结果无法正常工作

function search(){

var searchinput = document.getElementById("searchinput").value.toString().toLowerCase().trim();
var searchWords = searchinput.split(/\s+/);
var searchColumns = [0,1,2,3,5,6];


var resultsArray = data.filter(function(r){
  return searchWords.every(function(word){
    return searchColumns.some(function(colIndex){
      return r[colIndex].toString().toLowerCase().indexOf(word) !== -1
    });
  });
});
基于多个条件过滤二维阵列 您想要过滤一个数组,我假设它看起来像这样:

"Apple" | ("Orange" && "big" && "London")
const数据=[
[12,“苹果”、“小型”、“纽约”],
[11,“橙色”、“大”、“伦敦”],
[10,“橙色”、“小型”、“开罗”],
[9,“香蕉”、“中等”、“巴黎”]
];
您希望以以下格式输入搜索词:

Apple | Orange big London
然后,如果行在任何列中包含“Apple”或包含“Orange”和“big”以及“London”,它将过滤这些行。因此,等价物也可以这样写:

"Apple" | ("Orange" && "big" && "London")
修改脚本
const数据=[
[12,“苹果”、“小型”、“纽约”],
[11,“橙色”、“大”、“伦敦”],
[10,“橙色”、“小型”、“开罗”],
[9,“香蕉”、“中等”、“巴黎”]
];
函数搜索(){
var searchinput=“苹果|橙色大伦敦”;
//首先拆分“或”
var searches=searchinput.split(“|”);
//然后,对于每个serach“集合”,再次拆分为“”
搜索=搜索。映射((s)=>{
var terms=s.trim().split(“”);
返回terms.map((t)=>t.trim());
});
//最后过滤数据
var结果=数据过滤器((r)=>{
//初始化此项以便保留作用域
var应包括=假;
searches.forEach((术语)=>{
var results=terms.map((term)=>r.includes(term))//例如[true,true,true,false]
如果(results.every(r=>r==true))应该包含=true
});
回归应包括;
});
控制台日志(结果);
返回结果;
}

搜索()
尝试用
替换
…返回searchWords.each(function(word).
…返回searchWords.some(function(word).
@Sergey它可以工作,但问题是搜索不准确,因为它从多个列中提取数据。有没有办法使用类似“&”“或”的符号仅从中选取数据。例如,Apple small&Orange bigNow脚本获取您的搜索短语(例如Apple或Orange)并搜索单词(Apple或Orange)在第0、1、2、3、5、6列中。如果在这些列中找到任何搜索词,则包含数据的行将添加到resultsArray。您希望如何更改此算法?好的,第0列有参考号(无需和或),第1列有产品名称(需要搜索苹果或橙色),第2列有大小(需要搜索大、小或中)在第3列中有位置(需要搜索纽约、伦敦或德里)其他列在搜索中可以忽略。例如,要搜索“苹果|橙色大伦敦”我们只能得到这些的结果吗?非常感谢:)