>  기사  >  웹 프론트엔드  >  함수 template_javascript 기술을 사용하여 간단하고 효율적인 JSON 쿼리를 작성하는 방법 소개

함수 template_javascript 기술을 사용하여 간단하고 효율적인 JSON 쿼리를 작성하는 방법 소개

WBOY
WBOY원래의
2016-05-16 17:36:40887검색

JSON은 JavaScript의 백미라고 할 수 있으며, 우아하고 간결한 코드로 Object와 Array의 초기화를 구현할 수 있습니다. 이는 또한 기호 분리보다 의미론적이며 XML보다 간결한 텍스트 기반 데이터 정의이기도 합니다. 따라서 점점 더 많은 JS 개발자가 이를 데이터 전송 및 저장으로 사용하고 있습니다.

JS 배열에는 데이터 쿼리 및 필터링을 용이하게 하는 유용한 메서드가 많이 내장되어 있습니다. 예를 들어, 다음과 같은 데이터가 있습니다.

코드 복사 코드는 다음과 같습니다.

var Heroes = [
          // 이름============공격======방어========힘====민첩===== 지능====
                                                  이름: '얼음방 마녀', DP: 38, AP: 1.3, STR: 16, AGI: 16, int: 21},
{name: 빌려준 흑마법사', DP: 39, AP: 1.1, STR: 17, Agi:16, Int:21},
{name:'나가 사이렌', DP:51, AP:6.0, Str:21, Agi:21, Int:18} ,
{이름 :'현상금 사냥꾼', DP:39, AP:4.0, Str:17, Agi:21, Int:16},
                                                                        ​18, Agi:22, Int:15},
{name:'빛의 수호자', DP:38, AP:1.1, Str:16, Agi:15, Int:22},
{name: '연금술사', DP:49, AP:0.6, Str :25, Agi:11, Int:25}
                                                                                                        방어력이 40보다 크고 방어력이 4보다 작은 영웅의 경우 Array의 필터 방법을 사용할 수 있습니다.


코드 복사

코드는 다음과 같습니다. var match = Heroes.filter(function( e) {                                                                                        .
루프 판단을 수동으로 작성하는 것에 비해 필터 방식은 매우 편리합니다. 하지만 함수 콜백을 기반으로 하기 때문에 사용할 때마다 함수를 작성해야 하는데, 이는 간단한 쿼리에는 매우 번거롭고, 콜백을 사용하는 효율성도 크게 떨어집니다. 하지만 이렇게 하려면 방법이 없습니다. 단순해지려면 어느 정도의 성능을 희생해야 합니다. 이보다 더 간단한 문장을 사용하고 코드 확장의 효율성을 충분히 누릴 수 있다면 얼마나 완벽할까요?

먼저 위 코드를 이렇게 작성할 수 있고,
질의 속도가 손으로 쓴 순회 판단과 같다
:

코드 복사

코드는 다음과 같습니다.

var match = Heroes.select('@DP>40 AND @AP<4'); 약간 SQL과 비슷해 보이는데 구문만 바뀌었나요? 이는 어휘 분석, 의미 해석 등 많은 스크립트 엔진 기능을 작성해야 한다는 의미가 아닐까요? 수천 줄의 코드도 처리할 수 없고 효율성도 확실히 떨어지게 됩니다. . . 그렇게 복잡하다고 생각한다면 대본의 본질을 깊이 이해하지 못한 것입니다. 모든 스크립팅 언어에는 VBS의 eval(), new Function()과 같이 런타임에 코드를 동적으로 해석하고 코드를 동적으로 작성하는