【问题标题】:How do I get the length of an Array when certain conditions are met?满足某些条件时如何获取数组的长度?
【发布时间】:2019-11-15 20:11:11
【问题描述】:

在向 API 发出 AJAX GET 请求后满足某些条件时,我试图打印出一个长度。我不确定我是否做得正确。我不确定你是否可以帮助我,但我想我会尝试,因为我被卡住了。

代码表示当 UserID 与 LocalStorage UserID 匹配时,循环遍历 IsClosed 为 False 且问题发生在过去 24 小时内的所有问题。此外, isAfter 也不起作用。有人也可以对此提出建议吗?

另外,如果您需要我提供任何其他信息,请告诉我。谢谢。

function showNotificationCount(isLive, userIDNum, baseURL) {
  var userIDLogin = localStorage['userIDNum'];
  var userFullName = localStorage['userName'];
  // var webMethod = isLive ? 
  $.ajax({
    type: "GET",
    url: webMethod,
    contentType: "application/json; charset=utf-8",
    dataType: "JSON",
    data: {
      userID: userIDNum
    },
    success: function(data) {
      var parsedData = JSON.parse(data);
      var twentyFourHoursAgo = moment().subtract(1, 'day');
      console.log(parsedData);
      if (userIDLogin == userIDNum) {
        $.each(parsedData, function(index, item) {

          // # of open issues
          if (item.IsClosed == false) {
            if (moment(item.CreatedDate).isAfter(twentyFourHoursAgo)) {
              var openIssues = parsedData.length;
              console.log(openIssues);
              $('.openIssueCount').html(openIssues);

            }
          }

        });
      }

    },
    error: function(xhr, status) {
      console.log(xhr.responseText);
      console.log(xhr.status);
    }
  });
}

【问题讨论】:

  • 为什么会有var openIssues = parsedData.length;这一行?逻辑不应该加一到计数器。然后在循环结束时打印计数器值?
  • 你能给我一个简单的例子吗?
  • 我认为你必须创建一个属性来跟踪未解决的问题,并在 if 条件中增加这个,最后在每个块之后进行打印
  • @Hogan 谢谢!感谢您的回复。
  • 请贴出AJAX请求的响应,谢谢。

标签: javascript javascript-objects


【解决方案1】:

这里有一些示例代码来展示我在评论中所说的内容。我没有声称这是正确的 - 它完全显示了我尝试(但失败)用上面的英文描述的内容。

var hiImAcounter;

hiImAcounter = 0;

$.each(parsedData, function(index, item) {

      // # of open issues
      if (item.IsClosed == false) {
        if (moment(item.CreatedDate).isAfter(twentyFourHoursAgo)) {
          hiImAcounter++; 
          console.log(openIssues);
          $('.openIssueCount').html(openIssues);

        }
      }

    });
// hiImAcounter now has a count

记住 .each 是异步的,所以如果你立即检查计数器,它可能不会被设置——你必须使用一个 promise 来保证循环已经完成。

【讨论】:

  • 我明白了。非常感谢您今天的宝贵时间。
猜你喜欢
  • 2020-12-06
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多