检测textarea内容是否含URL的逻辑仅第一个return生效,如何单函数/单行实现?
问题成因
函数执行时只要遇到第一个 return 语句就会立即终止运行并返回结果,你写在后面的判断逻辑永远不会被触发,所以只能匹配到第一个条件对应的URL格式。
实现方案
直接用逻辑或运算符 || 拼接两个判断条件即可,满足任意一个条件就会返回true,无需额外定义函数:
常规单函数写法
function check(str){ return str.startsWith('www.') || str.startsWith('http'); }
单行代码实现
直接在filter中传入箭头函数即可,不需要单独声明check函数:
let urls = text.toLowerCase().split(' ').filter(str => str.startsWith('www.') || str.startsWith('http'));
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

