我目前有一个弯角管,可以根据用户的输入过滤结果。我唯一遇到的问题是某些结果没有值,因此,我收到以下错误:
无法读取null的属性'toLocaleLowerCase'
我的烟斗看起来像这样。
Bitmap
因此,我试图添加一条if语句,该语句仅允许执行代码为check.user用户属性不为null,但是每次尝试输入此内容时都会收到错误消息
我的JavaScript知识有限。任何帮助将不胜感激!
答案 0 :(得分:1)
利用Javascript中的条件来减少代码:
transform(value: QueuedTemplateDto[], filterBy: string): QueuedTemplateDto[] {
return filterBy &&
value.filter(item => item &&
item.user &&
item.user.toLocaleLowerCase().indexOf(filterBy) !== -1)
|| value;
}
这是因为有truthy/falsy个值,也称为holy trinity of Javascript。
查看其行为:
const empty = '';
const undef = undefined;
const nul = null;
const defined = 'This is defined';
const zero = 0;
const data = ['This is data'];
console.log(empty && data || 'it is empty');
console.log(undef && data || 'it is undefined');
console.log(nul && data || 'it is null');
console.log(nul && data || 'it is equal to zero');
console.log(defined && data || 'You will not see this message');
答案 1 :(得分:1)
您只需要检查用户属性是否已定义(null
),因此在过滤器语句之前添加check.user !== null
(为忽略所有虚假值,只需使用check.user
)。
transform(value: QueuedTemplateDto[], filterBy: string): QueuedTemplateDto[] {
filterBy = filterBy ? filterBy.toLocaleLowerCase() : null;
return filterBy ? value.filter((check: QueuedTemplateDto) =>
check.user !== null && check.user.toLocaleLowerCase().indexOf(filterBy) !== -1) : value;}
//^^^^^^^^^^^^^^^^^^^^^ ----- here
仅供参考::您可以根据需要更改条件。