javascript - 如何使用 Javascript 排除不存在的 JSON 数据?

标签 javascript arrays json api fetch

我正在使用 Javascript Fetch 加载一些 JSON 数据。我想在 HTML 文档中整齐地显示数据。

我在解析某些内容时遇到了一些麻烦。我尝试解析的大多数数据对象都包含图像,我需要加载这些图像。当对象不包含图像时就会出现问题。目前发生的情况是前 3 个图像正在加载(因为它们存在),然后第四个对象没有图像,并且循环停止加载其余图像(第 5 个、第 6 个等)。

有人可以看看这个并给我一个正确的方向吗?

fetch(url).then(function(response) {
    return response.json();
    JSON.stringify(data);
  })
  .then(function(data) {
    console.log(data);
    for (var i = 0; i < data.length; i++) {
      var listItem = document.createElement("li");
      var imgGrabber = document.createElement("img");

      listItem.innerHTML = data[i].title;
      imgGrabber.src = data[i].media[0].url;

      ul.appendChild(listItem);
      listItem.appendChild(imgGrabber);
    }


  });

因此,当获取函数遇到不包含图像的第三个对象时,就会出现问题。我需要做什么才能使此循环仅抓取存在的图像并跳过空对象?现在它只加载前 3 个图像,然后停止。

我希望这是有道理的,如果我可以改进这个问题,请告诉我。

最佳答案

添加 if 检查以查看媒体和图像 URL 是否存在。该错误可能是由于尝试访问缺失的 media[0] 上的 url 引起的。

if(data[i] && data[i].media && data[i].media[0] && data[i].media[0].url) {...}

条件从左到右评估,如果data[i]为假(在本例中为undefined),则不会尝试访问data [i].media,等等。

示例:

fetch(url).then(function(response) {
    return response.json();
  })
  .then(function(data) {
    console.log(data);
    for (var i = 0; i < data.length; i++) {
      var listItem = document.createElement("li");
      var imgGrabber = document.createElement("img");

      listItem.innerHTML = data[i].title;

      if (data[i] && data[i].media && data[i].media[0] && data[i].media[0].url) {
        imgGrabber.src = data[i].media[0].url;
      }

      ul.appendChild(listItem);
      listItem.appendChild(imgGrabber);
    }

  });

关于javascript - 如何使用 Javascript 排除不存在的 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49510883/

相关文章:

javascript - 方括号内的交替运算符不起作用

java - 通用数组创建与 Array.newInstance()

arrays - 面试问题,他们想要完成什么?

c - 尝试填充动态数组时出现访问冲突(大量项目)

php - Json_encode 返回 Null Php/MYSQL

php - 如何通过 window.print() 打印页面的某些特定部分

javascript - 无法从 AngularJS 中的元素计算 offsetHeight

javascript - 尝试在 Node.js 中创建 Postgres DB 时出错

php - PHP 中的 JSON API 请求无法正常工作

当 JSON 字段名称有空格时,ABAP 中的 JSON 反序列化