【问题标题】:Stuck getting For Loop to execute right on the first iteration卡住让 For Loop 在第一次迭代时正确执行
【发布时间】:2019-03-17 03:22:56
【问题描述】:

我尝试了以下 if 语句的几种变体,但没有任何运气。我确信这是一个简单的错误。

这里是代码-

this.params = function (request) {
    var queryParams;
    queryParams = request.urlQuery;
    var fragments = queryParams.split('&');
    return {
        "has_query_parameters": true,
        "query_parameters": (function () {
            var results;
            results = [];
            if (queryParams.length != 0) {
                for (i in fragments) {
                    var keyvalue = fragments[i].split('=')
                    name = keyvalue[0];
                    if (i === 1) {
                        results.push(keyvalue[0] + '=" & ' + '$' + keyvalue[0]);
                    } else {
                        results.push('&' + keyvalue[0] + '=" & ' + '$' + keyvalue[0]);
                    }
                }
            }
            return results.join(" & \"");
        })()
    };
};

对于说i === 1 的If 语句是问题所在。如果它是第一个片段,我需要执行的是执行。到目前为止,我尝试过的一切都失败了,而是执行 else 。

这里是 queryParams 变量:

client_id=CLIENTIDHERE&response_type=code&scope=SCOPESHERE&redirect_uri=REDIRECTURIHERE&state=STATEHERE  

【问题讨论】:

  • 您可能需要考虑使用URLSearchParams。您还没有说明您要实现的目标,但我从经验中知道解析 URL 是一个经过多次重新发明的轮子
  • 不确定 for (I in Fragments) 是否是 JS 中的有效代码。但是,假设它是,理论上我不会是数组中的第一个片段,而不是数字吗?
  • 发生的事情是返回以 & 开头,这意味着 if ( i === 1 ) 在第一次迭代时没有通过片段执行,而是返回 & 和开头返回不想要的。
  • 这就是我想要达到的目标——从回报中获得结果。 client_id=" & $client_id & "&response_type=" & $response_type & "&scope=" & $scope & "&redirect_uri=" & $redirect_uri & "&state=" & $state 但是我得到的是 &client_id=" & $client_id & "&response_type=" & $response_type & "&scope=" & $scope & "&redirect_uri=" & $redirect_uri & "&state=" & $state
  • 所以基本上我需要用 if 语句来确定我是否有来自 queryParams 的第一个片段。

标签: javascript for-loop if-statement


【解决方案1】:

数组从0 开始。您希望您的条件为:i === 0 以匹配第一个查询参数片段。

更新:

看起来您的键 (i) 是字符串。如果要使用身份比较,则需要使用 parseInt(i) === 0。否则,i == 0 应该可以解决问题。

【讨论】:

  • 是的,我也试过了。我认为这是问题所在,但没有奏效。
猜你喜欢
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
相关资源
最近更新 更多