有些JSON被解析为对象,我需要访问它,但我不能100%确定该属性是否会一直存在。所以我有这样的事情:
if (val && val.date && val.date.title) {
doSomething(val.date.title)
}
else {
doSomethingElse()
}
它接收了node.js,它就像python一样,人们喜欢以更优雅的方式简化事物。并且感觉我可能没有正确使用nodejs语言,它完成了工作,但可能这是非惯用代码并且存在惯用代码。我试图搜索它,但无法找到直接答案。实现同样的事情的另一种方式是try / catch,但它仍然没有感受到惯用的方式
try {
doSomething(val.date.title)
}
catch (e) {
doSomethingElse()
}
或者就是这样,我只是看得太深入了。
答案 0 :(得分:1)
您可以使用小模块get
中的utjs
函数。
var ut = require('utjs');
var obj = {a: {b: [{c:1, d: 2}, true]}};
ut.get(obj, ''); // Returns { a: { b: [ [Object], true ] } }
ut.get(obj, 'a'); // returns { b: [ { c: 1, d: 2 }, true ] }
ut.get(obj, 'a.b'); // returns [ { c: 1, d: 2 }, true ]
ut.get(obj, 'a.b[0]'); // returns { c: 1, d: 2 }
ut.get(obj, 'a.b[1]'); // returns true
ut.get(obj, 'a.b[0].c'); // returns 1
ut.get(obj, 'a.b[0].missing'); // returns undefined
ut.get(obj, 'a.b[0].missing.something'); // returns undefined
您可以使用已知模块lodash
中的相同功能获得相同的功能,但速度较慢。