使用关键字jQuery搜索JSON

时间:2017-08-07 22:19:29

标签: javascript jquery json

我试图通过关键字专门搜索JSON。我已经成功搜索了一个ID,在下面的代码中,它是"标记"。虽然,我想要做的是,在"标签的ID内搜索"但是通过关键字"折旧"。只有在JSON中用括号表示"贬值"将被选中。然后标题和uri将从中拉出并写入文档,就像我的代码中一样。

我如何使用当前代码进行关键字搜索?如果我的逻辑很难理解,请在评论中告诉我。在此先感谢:)

注意:这正是将使用数据的JSON格式。

这是我的代码:

<script type='text/javascript'>
  window.onload=function(){
  var data = {
         "Feed": [
           {
              "categories":[
              "Depreciated",
              "Test"
              ],
              "content":"",
              "tags":[
              "Depreciated",
              "Test"
              ],
              "title":"Visual Design",
              "uri":"google.com"
            },
            {
               "categories":[
               "Depreciated"
               ],
               "content":"",
               "tags":[
               "Depreciated"
               ],
               "title":"Typography",
               "uri":"google.com"
             }
         ]
      },
      res = JSON.search( data, '//*[tags]' );

  for (var i=0, str=''; i<res.length; i++) {
      str += '<a href="' + res[i].uri + '">Link</a>' + res[i].title + '<br/>';
  }

  document.getElementById('output').innerHTML = str;
  }
</script>

2 个答案:

答案 0 :(得分:0)

没有必要为此使用jQuery。 Try something like this instead

function getTitlesByTag(arr, tag) {
  return arr.filter(function(item) {
     return item.tags.includes(tag)
  }).map(function(item) {
    return return {
      title: item.title,
      uri: item.uri
    }
  })
}

Array.prototype.includes没有IE支持,所以如果你担心,你可以像这样交换那个checkOf的支票:

function getTitlesByTag(arr, tag) {
  return arr.filter(function(item) {
     return item.tags.includes(tag)
  }).map(function(item) {
    return {
      title: item.title,
      uri: item.uri
    }
  })
}

答案 1 :(得分:0)

shadeymoses比我快,但基本上你只需要filter()map()

var data = {
  "Feed": [{
      "categories": [
        "Depreciated",
        "Test"
      ],
      "content": "",
      "tags": [
        "Depreciated",
        "Test"
      ],
      "title": "Visual Design",
      "uri": "google.com"
    },
    {
      "categories": [
        "Depreciated"
      ],
      "content": "",
      "tags": [
        "Depreciated"
      ],
      "title": "Typography",
      "uri": "google.com"
    }
  ]
};

let results = data.Feed.filter(el => el.tags.includes('Depreciated')).map(el => ({
  uri: el.uri,
  title: el.title
}));

console.log(results);