使用Lodash的_.some判断两数组交集的TypeScript问题
解决Lodash _.some判断数组交集的问题
你当前的代码返回false是因为**.some的第二个参数用法错啦**!.some的第二个参数需要是一个断言函数(用来检测每个元素的条件),而不是直接传入另一个数组。当你把array2直接传进去时,Lodash会把它当成一个函数来调用,这显然不符合预期,所以才返回false。
正确的_.some实现方式
我们可以把第二个参数写成一个函数,检查当前元素是否存在于array2中,用_.includes来做这个判断就很方便:
import _ from 'lodash'; let array1 = ["test", "some", "lodash"]; let array2 = ["some", "includes"]; let condition : boolean = _.some(array1, (item) => _.includes(array2, item)); console.log(condition); // 输出true
补充:其他可选方案
如果你只是想判断两个数组是否有交集,其实还有更直接的方法:
- 用
_.intersection:它会返回两个数组的交集,只要结果长度大于0就说明有共同元素:let condition = _.intersection(array1, array2).length > 0; - 原生JavaScript也可以实现(不用Lodash):
let condition = array1.some(item => array2.includes(item));
不过既然你想练习_.some的用法,第一种方案完全没问题,而且逻辑清晰~
内容的提问来源于stack exchange,提问作者BrianM
相关产品推荐
相关产品推荐

