Đây là câu hỏi chi tiết về triển khai cho các chuyên gia JavaScript.Triển khai bảng quyết định phức tạp trong JavaScript
Tôi có giao diện người dùng với một số trường trong đó giá trị của các trường phụ thuộc vào thời trang phức tạp trên các giá trị của bảy bit đầu vào. Chính xác những gì sẽ được hiển thị cho bất kỳ một trong 128 giá trị có thể thay đổi thường xuyên khi người dùng thấy nhiều ứng dụng hơn?
Ngay bây giờ, tôi đã thực hiện điều này như một cây quyết định thông qua một cái lược nếu-thì-khác, nhưng nó giòn theo yêu cầu thay đổi và loại khó để có được quyền.
cách tiếp cận Một thực hiện tôi đã nghĩ đến việc là làm cho một mảng các giá trị từ 0x0 đến 0x7F và sau đó lưu trữ một đóng cửa tại mỗi địa điểm -
var tbl; // initialize it with the values
...
tbl[0x42] = function(){ doAThing(); doAnotherThing(); }
và sau đó gọi chúng với
tbl[bitsIn]();
Điều này, ít nhất làm cho logic quyết định thành một loạt các bài tập.
Câu hỏi: có cách nào tốt hơn không?
(Cập nhật: Holy crap, Sao mà dòng về 'thẻ iphone ajax' get trong đó Không ngạc nhiên đó là một khó hiểu chút.)
Cập nhật
Vậy điều gì đã xảy ra ? Về cơ bản tôi đã lựa chọn thứ tư, mặc dù tương tự như tôi đã kiểm tra. Logic là đủ phức tạp mà cuối cùng tôi đã xây dựng một chương trình Python để tạo ra một bảng chân lý trong máy chủ (tạo mã Groovy, trên thực tế, máy chủ là một ứng dụng Grails) và chuyển logic quyết định vào máy chủ hoàn toàn. Bây giờ phía JavaScript đơn giản là diễn giải một đối tượng JSON chứa các giá trị cho các trường khác nhau.
Cuối cùng, điều này có thể sẽ trải qua một lần lặp lại khác và trở thành dữ liệu trong một bảng cơ sở dữ liệu, được lập chỉ mục bằng vectơ của các bit.
Phần điều khiển bảng chắc chắn là một cách để đi; đã có một nửa tá mới thay đổi trong các yêu cầu cụ thể để hiển thị.
Từ những gì tôi hiểu về vấn đề của bạn, những suy nghĩ của bạn là sắp xếp âm thanh, nhưng tbh i không chắc chắn từ mô tả của bạn, bạn cần gì: P –
Mỗi bit có xác định một hành động cụ thể không? Nếu vậy, tại sao không thực hiện bitwise AND trên giá trị của bạn so với [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40] – draeton
@Martin, vấn đề là liệu có cách nào khác, linh hoạt hơn, cách thực hiện điều này hơn bảng của tôi của lambdas. –