在我的应用程序中,如果数据是未定义的或来自服务的null,我的html将不会加载,并且会出现“数据未定义”错误 所以我想使用lodash,但不知道如何使用。.
在我的以下ts文件中
this._PartService.GetDataValues().subscribe(
result => {
this.distributionData = this._PartService.part_data.partMasterDataCompleteList[0].partMasterData.plantSupplies.plantSupply
}
如果没有数据,我将得到“ partMasterDataCompleteList”为undefiend或null,所以我尝试使用Lodash,但我不知道如何使用它
答案 0 :(得分:1)
要处理未定义的情况,请使用以下内容:
this.distributionData =((((this._PartService.part_data.partMasterDataCompleteList || [])[0] || {}).partMasterData || {}).plantSupplies || {}).plantSupply
尽管更好的方法是让服务器发送一个空数组,而不是未定义或为空。
这不是lodash的问题。这只是处理未定义或空的情况
答案 1 :(得分:1)
您可能想使用_.get函数。
this.distributionData = _.get(this, '_PartService.part_data.partMasterDataCompleteList[0].partMasterData.plantSupplies.plantSupply')
答案 2 :(得分:1)
Lodash提供了许多方法来检查并从对象获取所需的值。
_.get实际上会返回值(如果存在),并且会返回undefined
(如果不存在)。
_.has将检查该值是否存在,如果存在则返回true
,如果不存在则返回false
。
_.hasIn与_.has
的作用相同,但还会检查这是否是继承的属性。
_.result实际上会沿路径行进并返回值,但有一个主要区别……它将执行获取值的方法中的任何功能。
示例:
var data = { more: { result: 1}}
var data2 = _.create({ 'more': _.create({ 'result': 2 }) });
var data3 = { more: function() { return { result: 1} }}
console.log(_.get(data, 'more.result')) // 1
console.log(_.has(data, 'more.result')) // true
console.log(_.hasIn(data2, 'more.result')) // true
console.log(_.result(data3, 'more.result')) // 1
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>