首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何像mysql一样在jQuery中从json或数组数据中查找名称

如何像mysql一样在jQuery中从json或数组数据中查找名称
EN

Stack Overflow用户
提问于 2018-07-23 03:01:32
回答 2查看 121关注 0票数 0

我想在jquery中从数组中搜索数据,但我遇到了一些问题。

当我在src_keyword变量中传递Wayfarer值时,它会返回相关数据

问题

但问题是,当我在src_keyword变量中传递旅行袋的值时,它返回空,但它应该返回Wayfarer Messenger Bag

以下是代码。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
   var src_keyword = 'Wayfarer Bag';
var array = [ "Foo", "Joust Duffle Bag", "Wayfarer Messenger Bag", "Voyage Yoga Bag", "pushit Messagenger bag" ]; //sample data

arr = $.map(array, function (value) {
                      var search = new RegExp(src_keyword, "gi");
                      if(value.match(search)) return value;

                      return null;
                    }
                 );
   console.log(arr);              
});
</script>
</head>
</html>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-23 03:35:39

正如wp78de在评论中精彩地提到的那样。您必须修改用作正则表达式的字符串。

下面,我使用for循环在单词之间插入.*?字符。

代码语言:javascript
复制
$(document).ready(function(){
  var src_keyword = 'Wayfarer Bag';
  var array = [ "Foo", "Joust Duffle Bag", "Wayfarer Messenger Bag", "Voyage Yoga Bag", "pushit Messagenger bag" ]; //sample data

  var multipleSearchWords = src_keyword.split(" ");
  var regex="";
  var result=[];
  
  for(i=0;i<multipleSearchWords.length;i++){
    regex+=multipleSearchWords[i];
    if(i<multipleSearchWords.length-1){
      regex+=".*?";
    }
  }
  
  console.log(regex);
  
  result = $.map(array, function (value) {
    var search = new RegExp(regex, "gi");
    if(value.match(search)){
      return value;
    }
    return null;
  });
  
  console.log(result);              
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

现在,这些单词必须按正确的顺序排列。;)

票数 1
EN

Stack Overflow用户

发布于 2018-07-23 08:41:19

您可以在一个简单的筛选器中使用正则表达式测试(我假设您只是想匹配所有的传送项)

代码语言:javascript
复制
var array = [ "Foo", "Joust Duffle Bag", "Wayfarer Messenger Bag", "Bag Wayfarer", "Bag Way farer Way Bag", "Voyage Yoga Bag", "pushit Messagenger bag" ]; // sample data

var arr = array.filter(function (value) { // Native Array.Filter is supported all the way down to IE9 so no need for jquery FYI
    return (/wayfarer/gi.test(value)); // Will return true for every entry that contains the text 'wayfarer' anywhere in the string
});

console.log(arr); // arr = (2) ["Wayfarer Messenger Bag", "Bag Wayfarer"]            
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51468372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档