如何在javascript中检查空变量

如何在javascript中检查空变量,javascript,html,json,Javascript,Html,Json,我有如下JSON文件: [{"url":null,"id":null},{"url":"bHo2M0V6ZzdOK0JPUFFSRG16ZHErRUJSWTRCQmxIY2lTL0I3Z2xkeVpnZHpRODRaaHZhOFR6S3VLZFpSaXpsWkVvY25jNDZIZGdJbzl3UE9MZGtmSXBsbHVvLzZuOXB5WXBYWS9VTk03dXM9","id":"

我有如下JSON文件:

[{"url":null,"id":null},{"url":"bHo2M0V6ZzdOK0JPUFFSRG16ZHErRUJSWTRCQmxIY2lTL0I3Z2xkeVpnZHpRODRaaHZhOFR6S3VLZFpSaXpsWkVvY25jNDZIZGdJbzl3UE9MZGtmSXBsbHVvLzZuOXB5WXBYWS9VTk03dXM9","id":"7c1335b69b2b4a037b3474da1fab2bbe"}]
现在我使用
javascript
解析这个JSON文件并从中提取值。其代码为:

<script>

<!-- This functions matches query string from URL-->

function getQuery(query) {
  var pReg = new RegExp(query + "\\=([^\\?&]+)", "i");
  if (!pReg.test(window.location.href)) {
    return '';
  }
  var pRes = pReg.exec(window['location']['href']);
    return decodeURIComponent(pRes[1]);
  }

<!-- This function parse JSON -->
function parseJSON() {
  fetch(`cache.json`)
  .then(res => res.json())
  .then(resJSON => sendData(resJSON))
  .catch(console.error);

<!-- Now this function here, grabs "query string" from "url" and passes it in below function. After that it "searches" that "URL" in "parsed JSON" file above and returns the "id" associated with it. -->

var url;
url = getQuery('url')
function sendData(jsonObj){
  for(var i=0;i<jsonObj.length;i++){
    if(jsonObj[i].url == url){
      var id = jsonObj[i].id;

    }
  }
}

但它在传递
URL
作为
querystring
时不会记录任何内容,该字符串确实存在于JSON文件中。虽然当
id
URL
相关联时,它会完美地记录。所以我猜代码没有错。如果他们有问题,请指出。

您的第一个答案应该有效,而且在使用for循环时最好使用let而不是var。尝试在for循环中记录json对象。 像下面这样试过,似乎有效

var jsonObj = [{"url":"abc","id":null},{"url":"abc","id":"7c1335b69b2b4a037b3474da1fab2bbe"}];
var url = "abc"
console.log(jsonObj.length);
for (let i = 0; i < jsonObj.length; i++) {
  let temp = jsonObj[i];
  console.log(temp);  
  if (temp.url === url) {
    let id = jsonObj[i].id;
    if(!id){
      console.log("not exists");
    } else {
      console.log("exists");
    }
  }
}
var jsonObj=[{“url”:“abc”,“id”:null},{“url”:“abc”,“id”:“7c135b69b2b4a037b3474da1fab2bbe”}];
var url=“abc”
log(jsonObj.length);
for(设i=0;i
var jsonObj=[{“url”:“abc”,“id”:null},{“url”:“BHO2M0V6ZZDOK0JPUFFSRG16ZHERRUJSWTRCQMXIY2LTL0I3Z2XKEVPNZHPRODRAAHZHOFR6VLZFPSAXPSWKVY25JNDZGDJBZL3UE9MZGTMSXBVLZUOXB5WXBYWS9VTK03DXM9”,“id”:“7C1335B69B2B437B3474DA12BBE”];
var url=“BHO2M0V6ZZDOK0JPUFFSRG16ZHERRUJSWTRCQMXIY2LTL0I3Z2XKEVPNZHPRODRAAHZHOFR6S3VLZFPSAXPSWKVY25JNDZIGDGDJBZL3UE9MZGTMSXBSBVLZUOXB5WXBYWS9VTK03DXM9”;
for(设i=0;i}
是否要输出“空”id?然后检查(id==null)@mourino,而不仅仅是
null id
。任何
URL
当被传递但不在
JSON文件中时,它应该
记录它
,但它没有这样做。它遵循以下逻辑:如果传递的url在
JSON
中不存在,那么它就不会有任何
id
,这相当于
null
。但是当传递
(id==null){}
时,它不会记录日志。首先检查是否(url=='')…因为您是通过getQuery()函数进行检查的,如果url在json文件中不存在,它会返回''。@Mouri您能解释一下您想说什么吗。变量
url
将始终存在。所以检查
url
没有任何意义,我说的是var url=getQuery(url)。。。。您应该检查此url变量。如果该url在json文件中不存在,不是吗?你能更详细地解释一下吗。我更新了答案,它对我有效。它有效是因为你在两个实例中都将
url
作为
abc
。没关系,不确定什么不起作用检查下面的代码。这不会记录:在w3school console.log中,我只是托管了他们的代码,以便共享。您是否运行了我包含的代码段?这不是你期望的产量吗?让我们来看看。
var jsonObj = [{"url":"abc","id":null},{"url":"abc","id":"7c1335b69b2b4a037b3474da1fab2bbe"}];
var url = "abc"
console.log(jsonObj.length);
for (let i = 0; i < jsonObj.length; i++) {
  let temp = jsonObj[i];
  console.log(temp);  
  if (temp.url === url) {
    let id = jsonObj[i].id;
    if(!id){
      console.log("not exists");
    } else {
      console.log("exists");
    }
  }
}