2014-09-05 70 views
1

嘿,我正在努力將一些應用程序從JSP轉換爲JSF 2,並且我已經指出我們要顯示的是Google地圖。舊的應用程序使用原型來獲取正確的數據。我們不再支持原型。JavaScript Prototype.js替換

我試圖取代

out.append("var index = 0; var count = markers.inject(0, function(acc, marker) { var count = marker.clusterCount ? marker.clusterCount : 1; return acc + count; });"); 

out.append("var index = 0; var count = markers.push(" + 
         "function(acc, marker) { " + 
          "var count = 0;" + 
          "count = marker.clusterCount ? marker.clusterCount : 1;" + 
          "return acc + count; " + 
         "}" + 
        ");"); 

這是一類建立的JavaScript。我知道我在這裏需要一個循環,至於哪裏沒有什麼工作。把循環放入我的函數中並不會改變任何值,將循環中的函數封裝會破壞地圖。有了這個,我得到了部分結果,但我錯過了很多。

我已經找到了原型,它的源代碼在這裏:http://prototypejs.org/doc/latest/language/Enumerable/prototype/inject/

雖然這是有幫助的我缺乏的JavaScript的理解被證明存在問題。如果任何人都可以幫助,我非常感謝它。

回答

1

那麼,你用.push()的電話替換了Prototype的.inject。從他們的文檔中,你可以看到他們正在做完全不同的事情!

inject相當的天體是.reduce() method。使用

out.append("var index = 0; var count = markers.reduce(function(acc, marker) { var count = marker.clusterCount ? marker.clusterCount : 1; return acc + count; }, 0);"); 

請注意,您還可以縮短var count = marker.clusterCount ? marker.clusterCount : 1; return acc + count;return acc + (marker.clusterCount || 1);

+0

我會在星期一早上嘗試。我不知道減少。謝謝 – 2014-09-06 15:45:00