首页 > 解决方案 > 将对象内的所有空、未定义数据转换为字符串数据

问题描述

我想创建一个函数,将对象数据中的空数据(如空值或未定义数据)替换为字符串值。

所以我找到了这段代码,它在 Jsfiddle 中运行良好。但是当我应用到我的对象数据时,它有一个错误。

错误来自repo object. 实际上,数据来自 github APIhttps://api.github.com/users/writingdeveloper/repos所以它将与相同的数据repo object

错误来自repo.license.key因为某些 repos 没有 repo.license,所以它会出错。

如果我尝试这样做。它可以 100% 工作,但是代码看起来不太好。我该如何解决这个问题?


if (!repo.homepage) {
    repo.homepage = 'None'
}  if (!repo.language) {
   repo.language = 'None'
}  if (!repo.mirror_url) {
   repo.repo.mirror_url= 'None'
}

router.get(`/:userId/admin/mypage`, sessionCheck, (req, res, next) => {
  let userId = req.params.userId;
  Repo.find({
    'owner.login': userId
  }, function (err, repo) {
    if (err) throw err;

     function isNull(obj, key) {
         return (obj[key] === null || obj[key] === undefined || obj[key] === "null");
     }
     function validate(obj) {
         var objKeys = Object.keys(obj);
         console.log(objKeys)
       objKeys.forEach((key) => {
         if(isNull(obj, key)) {
             obj[key] = "None";
         }
         if(typeof(obj[key]) == "object") {
             validate(obj[key]);
         }
       });
     }

     validate(repo);  // This function has an error.

    repo.map((repo) => {
      {

       (.....some image process.....)


        if (!repo.homepage) {
          repo.homepage = 'None'   // When I set each data to String data, it works.
        }
        if (!repo.language) {
          repo.language = 'None'   // When I set each data to String data, it works.
        }
      }
    })

    const sum = repo.reduce(function (prev, next) {
      return prev + next.detailViewCounter;
    }, 0);
    res.render('mypage/main', {
      userId: userId,
      dataArray: repo,
      todayVisitor: sum,
      updatedTime: updatedTime.toLocaleString()
    })
  })

标签: javascriptnode.js

解决方案


我认为你必须检查它的类型。为此使用 typeof

const list = []
const count = 2

typeof list //"object"
typeof count //"number"
typeof "test" //"string"

typeof color //"undefined"
const car = {
  model: 'Fiesta'
}
typeof car.color // color is undefined

推荐阅读