gpt4 book ai didi

Javascript 三元运算符链接错误

转载 作者:行者123 更新时间:2023-12-03 03:27:28 27 4
gpt4 key购买 nike

我在 dogs[] course[] Department[] 中有这个 if else 表达式过滤元素,第一个片段肯定按照我想要的方式工作,但我的问题是它不可重用,并且方式是 es5-差不多。

第一个片段

    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[] 无法按照我想要的方式工作

第二个片段

    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[]同样无法按照我想要的方式工作

第三个片段

    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));

请帮助我如何使用三元运算符而不是旧式的 if..else 来解决 departments[] block 中的问题

最佳答案

只需在过滤器中使用不同的变量名称,例如x:

return {dogs:1,courses:1,departments:1}[item] ? this[item].filter(x => 
new RegExp(`^${data}`, 'gi').test(item == 'departments' ? x.name : x))
: undefined;

关于Javascript 三元运算符链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com