下面是JavaScript專家的實現細節問題。在JavaScript中實現複雜的決策表
我有一個用戶界面,其中的字段值以複雜的方式依賴於七位輸入值的值。在用戶看到更多應用程序時,對於可能的128個值中的任何一個,應該顯示什麼內容纔會定期更改?
現在,我已經通過if-then-else comb來實現它作爲決策樹,但是它在需求變化下很脆弱,很難正確判斷。
我想過一種實現方法是使數值數組從0x0到0x7F的,然後存儲封閉在每個位置 -
var tbl; // initialize it with the values
...
tbl[0x42] = function(){ doAThing(); doAnotherThing(); }
,然後與調用它們
tbl[bitsIn]();
這至少使決策邏輯成爲一組任務。
問:有沒有更好的方法?
(更新:哇靠,你怎麼對「AJAX iphone標籤」即行那裏得到難怪這是一個有點令人費解。)
更新
到底發生了什麼?基本上我採取了第四種選擇,雖然與我檢查過的類似。這個邏輯非常複雜,我終於建立了一個Python程序來在服務器中生成一個真值表(實際上,生成Groovy代碼,實際上,主機是一個Grails應用程序)並將決策邏輯完全移入服務器。現在,JavaScript端簡單地解釋一個包含各個字段值的JSON對象。
最終,這可能會經歷一次更多的迭代,併成爲數據庫表中的數據,由位向量索引。
表驅動部分當然是出路;已經出現了半打新的改變了顯示的具體要求。
從我瞭解你的問題,你的重構的想法是健全的,但TBH我我不確定您的描述是什麼,您需要什麼:P – 2011-01-12 21:45:16
每一位都確定具體的行動嗎?如果是這樣,爲什麼不在你的值上對[0x01,0x02,0x04,0x08,0x10,0x20,0x40]執行按位AND操作 – draeton 2011-01-12 22:16:37