다음은 JavaScript 전문가를위한 구현 세부 질문입니다.JavaScript로 복잡한 의사 결정 테이블 구현
필자는 입력 값 7 비트의 값에 따라 필드 값이 복잡한 방식으로 나타나는 여러 필드가있는 UI가 있습니다. 사용자가 더 많은 응용 프로그램을 보면서 정기적으로 변경되는 가능한 128 개의 값 중 하나에 대해 정확히 표시되어야하는 것은 무엇입니까?
지금 당장은 if-then-else 빗을 통해 의사 결정 트리로 구현되었지만 요구 사항이 변경되고 일종의 권리를 얻기가 쉽지 않습니다.
내가 생각했습니다하나의 구현 방식에서 0x7f이 0x0의 값의 배열을 만든 다음 각각의 위치에서 폐쇄를 저장하는 것입니다 -
var tbl; // initialize it with the values
...
tbl[0x42] = function(){ doAThing(); doAnotherThing(); }
다음으로 호출
tbl[bitsIn]();
적어도 결정 로직을 많은 양의 할당으로 만듭니다.
질문 : 더 좋은 방법이 있습니까?
(업데이트 : 거룩한 쓰레기는 어떻게 '아약스 아이폰 태그'에 대한 그 라인이 얻을 의심 할 여지가 조금 수수께끼 없었다.)
업데이트
무슨 일이 있었 그래서 ? 기본적으로 나는 네 번째 옵션을 택했다. 논리가 충분히 복잡하여 결국 서버에 진리 테이블을 생성하는 파이썬 프로그램을 만들었습니다. (실제로는 Groovy 코드를 생성합니다. 호스트는 Grails 응용 프로그램입니다.) 결정 논리를 서버로 완전히 옮깁니다. 이제 JavaScript 측은 다양한 필드의 값을 포함하는 JSON 객체를 해석합니다.
결국 이것은 하나 이상의 반복을 거쳐 비트 벡터에 의해 인덱싱 된 데이터베이스 테이블의 데이터가됩니다.
테이블 구동 부분이 확실히 나왔습니다. 거기에 이미 반 12되었습니다 새로운 디스플레이에 대한 특정 요구 사항이 변경되었습니다.
, 당신의 리팩토링 생각이 소리입니다,하지만 TBH 전 귀하의 설명에서 확실하지 않은 것이 무엇입니까? P –
각 비트가 특정 동작을 결정합니까? 그렇다면 왜 [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40]에 대한 값에 대해 비트 AND를 수행하지 마십시오. – draeton
@Martin, 요점은 내 테이블보다 더 유연하고 유연한 방법이 있는지입니다. 람다들. –