为了在另一个数组中搜索一个数组的元素,可以在搜索目标上使用indexOf(),并在其他数组元素上运行循环,并在每个步骤检查存在。这是微不足道的,而且我对Javascript的知识也是如此。任何人都可以请建议一个更有效的方法吗?也许甚至可以使用该语言的内置方法?虽然我无法使用谷歌这样的方法。javascript检查是否存在另一个数组中的1个数组
0
A
回答
0
JavaScript的数组没有交叉点的方法。各种库提供了方法来做到这一点(通过循环你所描述的阵列),包括Underscore和PrototypeJS(以及其他人,我敢肯定)。
2
您可以在内部使用Array.filter()并在Array的原型上实现一个函数,该函数返回两者都通用的元素。
Array.prototype.common = function(a) {
return this.filter(function(i) {
return a.indexOf(i) >= 0;
});
};
alert([1,2,3,4,5].common([4,5,6])); // "4, 5"
再次为您在您的文章提到,这种的逻辑也适用,抓住每一个元素并检查它是否存在于其他。
+0
这真的很漂亮。 – 2014-09-24 08:35:47
+0
@ T.J.Crowder:谢谢兄弟:) – mithunsatheesh 2014-09-24 08:40:17
1
的毛发更有效的方法是转换阵列中的一个为哈希表,然后循环通过第二个,检查元件的在澳存在(1)时间:
a = [1,2,3,4,5]
b = [1,7,3,8,5]
map = {}
a.forEach(function(x) { map[x] = 1 })
intersection = b.filter(function(x) { return map[x] === 1 })
document.write(JSON.stringify(intersection))
这只适用于有问题的元素是基元。对于对象数组,您必须使用indexOf
方法。
ES6( “和谐号”)不支持Set
,但奇怪的是没有设置操作(集,交集等),所以这些应该由手工编码:
// Firefox only
a = [1,2,3,4,5]
b = [1,7,3,8,5]
sa = new Set(a)
sb = new Set(b)
sa.forEach(function(x) {
if (!sb.has(x))
sa.delete(x);
});
document.write(uneval([...sa]))
相关问题
- 1. 检查数组的键是否存在另一个数组值
- 2. 检查数组中的对象是否是另一个数组
- 3. angularjs检查数组值是否在另一个数组中
- 4. Swift检查数组是否包含在另一个数组中
- 5. 检查一个数组是否是另一个数组的一个整数
- 6. 检查数组是另一个数组
- 7. 的Javascript:检查是否从数组中的元素在另一个数组
- 8. 如何检查一个数组的元素是否在另一个数组中?
- 9. 检查数组在另一个数组
- 10. 检查是否至少有一个数组值在另一个数组中PHP
- 11. 检查一个数组的值是否在另一个
- 12. 如何检查一个数组的值是否是另一个数组的键?
- 13. 如何检查一个数组是否包含PHP中的另一个数组?
- 14. 检查一个数组是否与java中另一个数组的反转
- 15. 如何检查一个数组是否是另一个数组的子序列?
- 16. 检查一个数组中的每个元素是否包含在另一个数组的一组值中
- 17. 用另一个数组检查一个数组的数组
- 18. Javascript检查数组是否包含另一个数组的所有内容
- 19. 检查数组中是否有一个数组是空的
- 20. 查找数组中的字符串是否存在于另一个数组中
- 21. 检查一个数组中的所有值是否存在于另一个数组中
- 22. 检查数组 - 是否包含在另一个数组中的值?
- 23. Javascript - 检查数组中是否存在2个项目
- 24. 如何检查数组中的每个项是否存在于mvc 4中的另一个数组中?
- 25. 检查多维数组存在另一个多维数组
- 26. 检查一个数组中的元素是否为数组或不在javascript/jquery
- 27. 如何检查值是否存在一个数组中的Jquery
- 28. 是否有一个本地php函数来查看一个值的数组是否在另一个数组中?
- 29. 如何检查数组中是否存在另一个数组中存在的项目?
- 30. 如何检查是否在C#ListBox中存在一个数组
'indexOf'是可能是你需要的高效,但也有一些其他方法提到http://stackoverflow.com/questions/1885557/simplest-code-for-array-intersection-in-javascript和可能在http://stackoverflow.com/questions/11076067 /在-javascript-arrays-finding-matches-between- – Rhumborl 2014-09-24 07:58:21
你必须使用'i ndexOf'或一个可靠的跨浏览器解决方案的循环。在像jQuery这样的框架中有可用的方法(例如'inArray'),但也可以使用相同的方法。 – Diode 2014-09-24 08:01:56