如何用一行JavaScript代码判断数组是否包含另一数组的元素?
简化数组关键词检索的布尔值判断方法
你的需求是判断字符串数组items中所有元素都不包含关键词数组key_res里的任一关键词,最终返回布尔值。现有代码已经实现了需求,这里提供两种更简洁的写法:
原代码回顾
const items = ['Quality 1080p', 'Quality 720p', 'Quality 4K']; const key_res = ['4K', '6K']; const contains_string = items.every(item => { if(key_res.some(string => item.includes(string))) { return false; } return true; });
简化写法1:直接返回取反结果
把if-return逻辑简化为一行取反表达式,逻辑和原代码完全一致:
const contains_string = items.every(item => !key_res.some(string => item.includes(string)));
简化写法2:反向用some判断后取反
换个逻辑视角:如果items里有任何一个元素包含key_res中的关键词,就返回true,对这个结果取反就得到原需求的布尔值,可读性更强:
const contains_string = !items.some(item => key_res.some(string => item.includes(string)));
两种写法都省去了冗余的分支判断,代码更紧凑,且逻辑清晰。
内容的提问来源于stack exchange,提问作者InvalidSyntax
相关产品推荐
相关产品推荐

