2017-02-10 71 views
-1

我有腳本在選擇框中顯示下拉菜單。目前我正在使用的腳本是將jquery的每個函數轉換爲純javascript

jQuery.each(dslr, function(index, dslrgp) { 
    var aslrp= dslrgp.aslrp; 
    jQuery.each(aslrp, function(index2, pslrp) { 
     var found = 0; 
     jQuery.each(dropdown, function(index3, dditem) { 
      if (dditem.countryname == pslrp.countryname) 
      { 
       foundit = 1; 
      } 
     }); 
     if (foundit == 0) 
      dropdown.push(pslrp); 

    }); 
}); 

我該如何將其轉換爲純javascript。因爲如果我使用這個

dslr.forEach(function(index, dslrgp) { 
    var aslrp= dslrgp.aslrp; 
    aslrp.forEach(function(index2, pslrp) { 
     var found = 0; 
     dropdown.forEach(function(index3, dditem) { 
      if (dditem.countryname == pslrp.countryname) 
      { 
       foundit = 1; 
      } 
     }); 
     if (foundit == 0) 
      dropdown.push(pslrp); 

    }); 
}); 

它不起作用。

+1

「它不工作」 - 定義 「不工作」。給出一個明確的問題陳述。你得到的行爲與你期望的行爲有什麼不同? – Quentin

+1

「將jquery的每個函數轉換爲純javascript」 - jQuery **是純JavaScript代碼。有完全有效的理由想要移除對jQuery的依賴,但不要將jQuery誤認爲是JavaScript以外的任何東西。 – Quentin

+0

我編輯了我的問題。 –

回答

1

注意參數在本機forEach中的差異 - 首先是item的值,second是index。因此,而不是:

aslrp.forEach(function(index2, pslrp) { 
... 
dropdown.forEach(function(index3, dditem) { 

使用本:

aslrp.forEach(function(pslrp, index2) { 
... 
dropdown.forEach(function(dditem,index3) { 
1

您正在使用.forEach()方法是錯誤的。 forEach docs

您不需要將數組作爲第一個參數傳遞。只需傳遞迴調即可。

dslr.forEach(function(dslrgp) { 
    // do something.. 
} 

或鍵/值迭代

dslr.forEach(function(value, index) { 
    // do something.. 
}