我需要一些語法幫助與三元運營商,這將有助於我把正確的標記圖標上我的好map.I三個區0,1和2具有獨特的圖標0,1和2.多個三元運算
我用所以這個三元操作精細合作,只有兩個領域;
icon: (area == 1) ? icon1: icon0,
現在我需要爲area2添加一個額外的第三個圖標(icon2)。
我已經試過各種方法,但似乎無法得到它的權利。
我需要一些語法幫助與三元運營商,這將有助於我把正確的標記圖標上我的好map.I三個區0,1和2具有獨特的圖標0,1和2.多個三元運算
我用所以這個三元操作精細合作,只有兩個領域;
icon: (area == 1) ? icon1: icon0,
現在我需要爲area2添加一個額外的第三個圖標(icon2)。
我已經試過各種方法,但似乎無法得到它的權利。
的語法是:
icon: (area == 1) ? icon1 : (area == 2) ? icon2 : icon0,
但是,這開始變得複雜。您最好創建一個功能來完成這項工作:
icon: getIcon(area),
...
function getIcon(area) {
if (area == 1) {
return icon1;
} else if (area == 2) {
return icon2;
}
return icon0;
}
icon: (area == 0) ? icon0 : (area == 1) ? icon1 : icon2,
對象文字如何?
icons = {
0: icon0,
1: icon1,
2: icon2
}
icon = icons[area];
很簡單的方式
var test1 = false
var test2 = true
var test = test1 ? test1 : test2 ? test2 : 'some default value'
這不是一個很好的測試,因爲'test1? test1:(test2?test2:'某個默認值')'和'(test1?test1:test2)? test2:'一些默認值'給出了相同的結果 – chharvey
更好的測試是:var test = true; var result = test === true? '這是真的':test === false? '這是虛假':'它是空'。這樣當你分組最後兩個運算符時,'test === true? '這是真的':(test === false?'it is false':'it is null')',你會得到''它是''(正確),但是當你將前兩個運算符分組時, (test === true?'這是真的':test === false)? '它是虛假的':'它是空的',你會得到''它是錯誤的''(不正確)。這個測試更好,因爲它向你顯示了隱含的操作符分組。 – chharvey
寫完之後,我意識到0總是映射到icon0,所以Pointy的回答是可取的。但是,如果您在這種情況下需要「全部」值,例如'icon0',則此方法仍然可行。 –
謝謝賈斯汀,我決定最適合我需求的功能。我還發現,與三元運營商一起工作會更友好,而隨着時間的推移,三元運營商可能會變得更大。謝謝。 – Sam
沒問題,很高興你覺得這有幫助! –