过滤器引发-无法读取null的属性“ toLowerCase”

时间:2019-08-16 18:23:45

标签: javascript angular typescript angular7

我正在尝试根据缓存的查询结果过滤给定的输入。由于我再次过滤了用户输入值和数据库,因此我将它们转换为小写并检查

result =  this.cachedResults.filter(f => f.prj.toLowerCase().indexOf((this.sV).toLowerCase()) !== -1);

它可以正常工作,直到cachedResult在该字段中没有NULL为止。但是,如果为NULL,我如何在此处转义该记录。

3 个答案:

答案 0 :(得分:2)

如果result = this.cachedResults.filter(f => { if (!f.prj) { return false; // Or return true, if you want } return f.prj.toLowerCase().indexOf((this.sV).toLowerCase()) !== -1); }); f.prj,则它不能包含NULL,因此应过滤掉特定的this.sV,对吗?在这种情况下:

f

答案 1 :(得分:1)

在对象上使用prj之前,必须检查对象中是否存在属性toLowerCase()

result =  this.cachedResults.filter(f => {
  return f.prj ? (f.prj.toLowerCase().indexOf((this.sV).toLowerCase()) !== -1) : false
});

这对您有用吗?

如果问题是(this.sV)不存在,那么您也必须检查一下。

答案 2 :(得分:1)

您可以执行以下操作来捕获var qstns = _context.UserAnswers.Where(uans => uans.SurveyId == id) .GroupBy(uans => uans.CreatedBy) .Select(grans => new UserAnswersReturnDto { UserEmail = grans.Key, Qustions = grans.Select(ans => new UserAnswersSet() { QNo = ans.QNo, Ansrs = ans.Answers }).ToList() } ).ToList(); 中的空值:

f.prj