所有元素我有一個數組,看起來像:的Javascript過濾器和匹配陣列
var testArr = ["40", "A1", "B9", "58"]
我要循環某一類的所有div元素,並只返回元素,其中的數據屬性匹配任何該數組中的項目。
如果我做這樣的事情:
$("div.prodCodes").filter(function(e) {
var x1 = $(this);
var x2 = $(this).data("prodCode");
testArr.forEach(function(e) { if (e == x2) { console.log("MATCH"); } });
});
該控制檯輸出匹配的正確的號碼,但我不能回報從過濾功能的那些元素。
我到底在想什麼?我嘗試過創建一個新陣列並將每個項目推送到它並返回即,但它總是空的。我確信我在這裏錯過了一些明顯的東西。我也嘗試使用.grep()重寫,並且無處可去。幫助表示讚賞。
什麼是downvote?據我所知,它在代碼片段中完成了這項工作,並強調了數據類型不匹配問題。有人能解釋我錯過了什麼嗎? – trincot
我沒有倒下你,別人也沒有。這對我所需要的東西來說過分了,但是你解決了我的問題。我有一個數據類型不匹配,toString()轉換修復了我的問題。 –
確實,我添加了一些額外的代碼來顯示結果,因爲文本顯示比整個「div」節點更好。我添加了Set的思想,因爲它導致* O(n)*時間複雜性而不是* O(nm)*,其中* n *是'div'元素的數量,* m *測試陣列。對於那些確實有點過分的小數據,但它並沒有傷害,並且不會讓你的代碼變大。 – trincot