Nodejs以优雅的惯用方式访问对象属性



一些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()
}

或者也许就是这样,我只是对事情看得太深了。

您可以使用小模块utjs中的函数get

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的相同功能获得相同的功能,但速度较慢。

最新更新