使用jQuery过滤JSON结果

小编

有一个JSON的搜索引擎这里我试图弄清楚如何过滤Google工作表的结果以仅包含字符数小于4且大于7的项目,例如:

entry.filter(entry => entry.gsx$status.$t.length > 7 || entry.gsx$status.$t.length < 4)

所以在jQuery中,我这样做:

mounted: function () {
     var entry = data.feed.entry;
     var result = entry.filter(entry => entry.gsx$status.$t.length > 7 || entry.gsx$status.$t.length < 4); 
$.ajax({
      dataType: "json",
      url: GSHEET_JSON_URL + '&cache-buster=' + Math.random(),
      success: function(data, result) {
            if (data && data.feed && data.feed.entry && data.feed.entry[0]) {.....etc....

然后,我假设它必须放入if语句(根据注释中的建议),但是if语句已经被填满,因此我将其放在表示data.feed.entry.forEach(function(entry)以下内容的(下面的第19行)之后,并在该行之前对其进行了测试。

我的问题是我无法完全弄清楚将其放在列出的代码中的位置。我尝试将条目过滤器放在第150行(请注意GitHub项目),但它不会发回任何错误并且不起作用。我可能是想将其放在错误的部分吗?我认为它应该在ajax调用之后立即执行。例如在本节中:

  mounted: function () {
             $.ajax({
          dataType: "json",
          url: GSHEET_JSON_URL + '&cache-buster=' + Math.random(),
                   success: function(data) {
            if (data && data.feed && data.feed.entry && data.feed.entry[0         var missing = ['customer', 'regisnbrtx', 'num', 'description', 'qty', 'price', 'total', 'address', 'status'].filter(function(name) {
                return !data.feed.entry[0]['gsx$' + name];
              });
              if (missing[0]) {
                vueSearch.error = 'You must add the "`' + missing.join('`", "`').replace(/, (?!.*,)/, ', and ') + '`" field' + (missing[1] ? 's' : '') + '.';
                return;
              }
            }
            else {
              vueSearch.error = 'The specified GSHEET_JSON_URL is invalid:<br>`' + GSHEET_JSON_URL + '`';
              return;
            }

            data.feed.entry.forEach(function(entry) {

              vueSearch.links.push({
                customer: entry.gsx$customer.$t, 
                regisnbrtx: entry.gsx$regisnbrtx.$t,
                num: entry.gsx$num.$t,
                description: entry.gsx$description.$t,
                qty: entry.gsx$qty.$t,
                price: entry.gsx$price.$t,
                total: entry.gsx$total.$t,
                address: entry.gsx$address.$t,
                status: entry.gsx$status.$t,
                partrecieved: entry.gsx$partrecieved.$t,
                date: entry.gsx$date.$t,
                shipdate: entry.gsx$shipdate.$t,
                itemrec: entry.gsx$itemrec.$t,
                comments: entry.gsx$comments.$t
              });
            });

            vueSearch.loading = false;
            vueSearch.updateResults();
          },
          error: function() {
            vueSearch.error = 'The specified GSHEET_JSON_URL does not contain JSON:<br>`' + GSHEET_JSON_URL + '`';
            vueSearch.loading = false;
          }
        });
        // Set focus to search box
        $('#barcoder').select();
      }
    });
  });

我可以使用普通的jQuery来做到这一点,但是当我将其与Ajax结合使用时,我会感到茫然。这里有几篇关于过滤的文章,但不是我发现的字符长度。

还尝试与创建者联系并在其页面上发布,但没有运气。任何帮助,将不胜感激。

小编

找到了!

在原始版本的第76-80行中,您可以将var匹配更改为“ whatever”,然后过滤结果。它仍然会导入所有结果,但会进行调整以删除带有您在估算搜索词时指定的字符串的结果。例如:

var results = self.links
            .reduce(function(scores, link, linkIndex) {
              var score = searchTerms.reduce(function(score, searchTerm) {
                if (score !== false) {

     //modify one of these below, my example on the first var:

                  var matchesTitle = ((link.title).match('YOURSTRINGHERE'));
                  var matchesURL = (link.url.match(searchTerm.rgx) || '').length;
                  var matchesDescr = ((link.description || '').match(searchTerm.rgx) || '').length;
                  var matchesKeywords = ((link.keywords || '').match(searchTerm.rgx) || '').length;
                  var matchesAny = !!(matchesTitle || matchesURL || matchesDescr || matchesKeywords);
                  return searchTerm.must !== !matchesAny

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章