javascript – Lodash _.hasIntersection?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Lodash _.hasIntersection?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1296字,纯文字阅读大概需要2分钟。
内容图文
![javascript – Lodash _.hasIntersection?](/upload/InfoBanner/zyjiaocheng/809/0493cd4bfbac4b7f90bdd3c49378ff63.jpg)
我想知道两个或多个阵列是否有共同的项目,但我不在乎这些项目是什么.我知道lodash有一个_.intersection方法,但我不需要它来遍历每个数组的每一个项目.相反,我需要类似_.hasIntersection方法的东西,它会在找到第一个常见事件后停止查看数组.洛达什有类似的东西吗?
解决方法:
此方法可让您有效地搜索任意数量的数组中的交集.
function hasIntersection() {
var collections = _.rest(arguments);
return _.some(_.first(arguments), function(item) {
return _(collections)
.chain()
.map(_.ary(_.partial(_.includes, item), 1))
.compact()
.size()
.isEqual(collections.length)
.value();
});
}
hasIntersection()函数以创建集合开始,这些是我们想要查找交叉值的集合,减去第一个集合.它返回值some(),它使用first()数组参数进行迭代,对some()的回调比较传递给函数的所有其他数组.
这是通过包装集合和构建调用链来完成的.它使用chain()来启用显式链接,因为我们希望在链的末尾链接isEqual()到size().
我们将collections变量(一个数组数组)映射到includes()函数.这会产生一个布尔值数组,true表示其中一个集合中存在交叉值.下一步是使用compact()删除falsey值.我们剩下的是相交集合的数量.
如果相交集合的数量与集合的长度相同,我们发现了一个与所有集合相交的值,并且可以退出.这种方法很有效,因为有一些()和包括()的短路
hasIntersection([ 1, 2 ], [ 2, 3 ]);
// → true
hasIntersection([ 1, 2, 3 ], [ 2, 4, 5 ], [ 2 ]);
// → true
hasIntersection([ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ]);
// → false
内容总结
以上是互联网集市为您收集整理的javascript – Lodash _.hasIntersection?全部内容,希望文章能够帮你解决javascript – Lodash _.hasIntersection?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。