【发布时间】: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