爲了在另一個數組中搜索一個數組的元素,可以在搜索目標上使用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