我試圖在d3圖表上放置一些標籤。JavaScript確保所有數字都是唯一的,如果不是,加上一個(或多個)
我有一個DATA
對象,每個值爲DATA.rowOffset
。基本上我的代碼計算DATA.rowOffset
並設置它是這樣的:d.rowOffset = Math.floor(d.total/heightSquares);
但有時rowOffset
是相同的,所以標籤呈現在彼此之上。
我需要循環瀏覽這個DATA
並檢查重複項,然後只是+1重複項。
我嘗試了一種方法,查看以前的.rowOffset
,然後將1加到當前的rowOffset
上,但如果有2個以上的重複項,則該方法不起作用。
我確定有一個更簡單的方法....也許。
編輯:這裏有一些代碼,我主要嘗試if (d.rowOffset === DATA[i-1].rowOffset) d.rowOffset++;
,所以它檢查前一行的偏移量。我想我需要循環所有的數據,然後重新啓動循環,如果發現重複。
DATA.forEach(function(d, i) {
d.amt = +d.amt;
d.units = Math.floor(d.amt/squareValue);
sumTotal = sumTotal + d.units;
d.total = sumTotal;
d.rowOffset = Math.floor(d.total/heightSquares);
if (i > 0) {
console.log(DATA[i - 1].rowOffset);
if (d.rowOffset === DATA[i - 1].rowOffset) d.rowOffset++;
}
所以如果你有'[2,2,2]'?你期望'[2,3,3]還是'[2,3,4]'? – nem035
[2,3,4],所以所有的值都是唯一的,如果他們試圖在同一行上,標籤就會疊加在彼此之下。謝謝 – phocks
你可以顯示你嘗試過的方法的代碼嗎? – RJM