Javascript 通过数组的多重搜索功能

Javascript 通过数组的多重搜索功能,javascript,Javascript,我正在尝试搜索多个值的列表 以下是值的示例: [ { "color":"blue", "medium":"Sculpture", "place":"Garage" } { "color":"red", "medium":"Painting", "place":"Pool" } ] 下面是我的代码。找到单个值非常有用。但我需要找到多个值。例如,我需要查找诸如“红蓝”或“蓝色绘画”等查询的结果 它应该返回同时包含两个单

我正在尝试搜索多个值的列表

以下是值的示例:

[
    {
    "color":"blue",
    "medium":"Sculpture",
    "place":"Garage"
    }
    {
    "color":"red",
    "medium":"Painting",
    "place":"Pool"
    }
]
下面是我的代码。找到单个值非常有用。但我需要找到多个值。例如,我需要查找诸如“红蓝”或“蓝色绘画”等查询的结果


它应该返回同时包含两个单词的结果

我真的不知道如何解决这个问题,有人有主意吗? 非常感谢

function search(){
    var search = $('#search').val();
    if(search.length < 1) {
      return null;
    };

    var searches = search.split(" ");
    var fields = ["color","medium","place"]; 
    var results = [];

    $.each(searches, function(i, word){
      var wordResult = searchInJson(word,fields,json);
      if( wordResult.length > 0 ) {
        results.push(wordResult);
      }
    });

    var results = searchInJson(searches,fields,json);
    displaySearchResults(results);
};

function searchInJson(search,fields,json) {
    var regex = new RegExp(search);
    var results = [];
    $.each(json, function(i, image){
      $.each(fields, function(j, fieldname){

        var field = image[fieldname];
        if (regex.test(field)) {
          results.push( image );
        }
      });
    });
    return results;
}
函数搜索(){
var search=$('#search').val();
如果(search.length<1){
返回null;
};
var searches=search.split(“”);
变量字段=[“颜色”、“中等”、“位置”];
var结果=[];
$.each(搜索、函数(i、word){
var-wordResult=searchInJson(单词、字段、json);
如果(wordResult.length>0){
结果。推送(wordResult);
}
});
var results=searchInJson(搜索、字段、json);
显示搜索结果(结果);
};
函数searchInJson(搜索、字段、json){
var regex=新的RegExp(搜索);
var结果=[];
$.each(json,函数(i,图像){
$.each(字段、函数(j、字段名){
变量字段=图像[字段名];
if(正则表达式测试(现场)){
结果:推送(图像);
}
});
});
返回结果;
}

这里有一个快速的尝试方法:

var列表=[
{
“颜色”:“蓝色”,
“媒介”:“雕塑”,
“地点”:“车库”
},
{
“颜色”:“红色”,
“媒介”:“绘画”,
“地点”:“游泳池”
}
];
var search=“红色绘画”;
var results=list.filter(函数(el){
var s=search.toLowerCase().split(“”);
用于(el中的var键){
对于(变量i=0;i控制台日志(结果)这是一个对象数组,而不是你为什么要建立
结果
,然后完全覆盖它?那么结果应该是什么呢?蓝色绘画-返回包含两个词或两个词的结果?它应该返回包含两个词的结果是的,非常感谢!有些值由两个词组成,例如:“地点”。上面的代码在这个案例中似乎不起作用。你知道我怎么做吗?再次感谢!请参阅我在indexOf上的注释,if将更改为
if(el[key].toLowerCase().indexOf(s[i])!=-1)
。然而,如果你在“愤怒”上搜索,你会得到“车库”。好的,这很好。谢谢