我有这个if if else表达式筛选元素dogs[] courses[] departments[]
第一个代码段绝对按我想要的方式工作,但我的问题是它不可重用,方式是es5-ish。Javascript三元运算符链接错误
1段
if (item == 'dogs') {
item = 'dogs';
return this[`${item}`].filter(item => new RegExp(`^${data}`, 'gi').test(item));
} else if (item == 'courses') {
item = 'courses';
return this[`${item}`].filter(item => new RegExp(`^${data}`, 'gi').test(item));
} else if (item == 'departments') {
item = 'departments';
this.dept = this.deptControl.value;
return this[`${item}`].filter(item => new RegExp(`^${data}`, 'gi').test(item.name));
}
在这个片段中我尽了最大努力缩短ES5十岁上下的代码,但deptartments[]
不工作,顺便我想
第2段
item =
item == 'dogs' ? 'dogs'
: item == 'courses' ? 'courses'
: item == 'departments' ? 'departments' : '';
return this[`${item}`].filter(item => new RegExp(`^${data}`, 'gi').test(item == 'departments' ? item.name : item));
和这个片段中的department[]
是同样不工作的方式我想
3段
item =
item == 'dogs' ? 'dogs'
: item == 'courses' ? 'courses'
: item == 'departments' ? 'departments' : '';
// let patch = item == 'departments' ? item.name : item;
let patch = item == 'departments' ? item['name'] : item;
return this[`${item}`].filter(item => new RegExp(`^${data}`, 'gi').test(patch));
请帮我如何解决在departments[]
块我的问题,使用三元运算符,而不是老式的if..else
排列不会咬人。 –
或者只是'item = item || “”' – adeneo
你只在第一个块中设置this.dept。 – trincot