javascript - 将对象内的所有空、未定义数据转换为字符串数据
问题描述
我想创建一个函数,将对象数据中的空数据(如空值或未定义数据)替换为字符串值。
所以我找到了这段代码,它在 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()
})
})
解决方案
我认为你必须检查它的类型。为此使用 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
推荐阅读
- python - apache Beam 广播一个 spacy 模型作为 Dataflow 中的侧面输入
- sql - 如何查询架构中没有成员的团队
- reactjs - 在 React 中使用 Swiper 断点时发生功能故障
- php - 强制形式主题
- javascript - Editor.JS SyntaxError:不能在模块外使用导入语句
- java - 如何使用 RestAssured Java 参数化 XML
- regex - 正则表达式只允许小数和 0 中的负数
- python - 更改python中的分配顺序时“超出时间限制”
- go - 两个 goroutine 之间的数据竞争
- c++ - 尝试解决 MFC BEGIN_EVENT_MAP 编译时错误