使用jQuery过滤JSON结果

时间:2019-06-04 14:36:58

标签: javascript jquery json ajax filter

有一个JSON搜索引擎here。我试图弄清楚如何过滤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结合使用时,我会无所适从。这里有几篇关于过滤的文章,但不是根据我发现的字符长度。

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

1 个答案:

答案 0 :(得分:0)

找到了!

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

Parent    Child
p1        c1
p1        c2
p1        c3