javascript - 如何使用 JavaScript 搜索 JSON 树

标签 javascript json

这里我们有一个 JSON 树:

{  
       "title":"Recipe Puppy",
       "version":0.1,
       "href":"http:\/\/www.recipepuppy.com\/",
       "results":[  
          {  
             "title":"Ginger Champagne",
             "href":"http:\/\/allrecipes.com\/Recipe\/Ginger-Champagne\/Detail.aspx",
             "ingredients":"champagne, ginger, ice, vodka",
             "thumbnail":"http:\/\/img.recipepuppy.com\/1.jpg"
          },
          {  
             "title":"Potato and Cheese Frittata",
             "href":"http:\/\/allrecipes.com\/Recipe\/Potato-and-Cheese-Frittata\/Detail.aspx",
             "ingredients":"cheddar cheese, eggs, olive oil, onions, potato, salt",
             "thumbnail":"http:\/\/img.recipepuppy.com\/2.jpg"
          },
          {  
             "title":"Eggnog Thumbprints",
             "href":"http:\/\/allrecipes.com\/Recipe\/Eggnog-Thumbprints\/Detail.aspx",
             "ingredients":"ginger, brown sugar, butter, butter, powdered sugar, eggs, flour, nutmeg, rum, salt, vanilla extract, sugar",
             "thumbnail":"http:\/\/img.recipepuppy.com\/3.jpg"
          }
        ]
}

我需要对其进行搜索,以便得到 title (菜谱)如果搜索词在 ingredients例如“姜”

这是我尝试做的:

  var url = requestUrl("http://www.recipepuppy.com/api/");
  var data = JSON.parse(url);

  var ourResults = [];
  var searchField = "ingredients";
  var searchVal = "onions";
  for (var i=0 ; i < data.results.length ; i++)
  {
      if (data.results[i][searchField] == searchVal) {
          ourResultss.push(data.results[i]);
      }

谢谢!

最佳答案

您可以使用数组的 filter方法:

...
var filter = data.results.filter(function (el) {
    return el[searchField].indexOf(searchVal) >= 0;
});
if (filter.length) ourResults = filter;

关于javascript - 如何使用 JavaScript 搜索 JSON 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28837427/

相关文章:

javascript - javascript递归函数的深度

javascript - 动态声明和使用 javascript 值

PHP JSON 特殊字符

json - 为什么在 Swift 中尝试序列化 JSON 时会出现错误?

javascript - 使用jquery突出显示具有最小值的html列

javascript - javascript 混淆函数中的++i 与 i++

javascript - Object.defineProperty 和对象属性字面量之间的区别

javascript - 返回对象数组中名称(许多名称)的最后一次出现

javascript - 使用 Angular 平移进行本地化

java - 如何将这些 servlet 数据创建为 json 格式我尝试过这个东西