그누보드 메뉴에서

그누보드 메뉴에서

QA

그누보드 메뉴에서

본문

그누보드 메뉴(g5_menu)를 읽어오면 아래와 같습니다. (me_order를 오름차순으로.)


[
    {
        "meId": 39,
        "meCode": "1020",
        "meName": "공지사항",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=notice",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 44,
        "meCode": "3020",
        "meName": "갤러리",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=gallery",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 46,
        "meCode": "50",
        "meName": "회사소개",
        "meLink": "http://youngcart5.test/bbs/content.php?co_id=company",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 37,
        "meCode": "10",
        "meName": "자유게시판",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=free",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 38,
        "meCode": "1010",
        "meName": "갤러리",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=gallery",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 43,
        "meCode": "3010",
        "meName": "자유게시판",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=free",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 40,
        "meCode": "1030",
        "meName": "질문답변",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=qa",
        "meTarget": "self",
        "meOrder": 3,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 45,
        "meCode": "40",
        "meName": "테스트",
        "meLink": "http://youngcart5.test/bbs/group.php?gr_id=test",
        "meTarget": "self",
        "meOrder": 3,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 41,
        "meCode": "20",
        "meName": "질문답변",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=qa",
        "meTarget": "self",
        "meOrder": 4,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 42,
        "meCode": "30",
        "meName": "쇼핑몰",
        "meLink": "http://youngcart5.test/bbs/group.php?gr_id=shop",
        "meTarget": "self",
        "meOrder": 5,
        "meUse": 1,
        "meMobileUse": 1
    }
]

 

그런데 이것을 아래와 같이 만들려고 합니다. (meCode 4자리인 것은 서브메뉴로 앞의 두자리와 매칭되는 메뉴 안으로 집어 넣기)


[
    {
        "meId": 46,
        "meCode": "50",
        "meName": "회사소개",
        "meLink": "http://youngcart5.test/bbs/content.php?co_id=company",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 37,
        "meCode": "10",
        "meName": "자유게시판",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=free",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1,
"submenus": [
    {
        "meId": 39,
        "meCode": "1020",
        "meName": "공지사항",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=notice",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 38,
        "meCode": "1010",
        "meName": "갤러리",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=gallery",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 40,
        "meCode": "1030",
        "meName": "질문답변",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=qa",
        "meTarget": "self",
        "meOrder": 3,
        "meUse": 1,
        "meMobileUse": 1
    },
],
     },
    {
        "meId": 45,
        "meCode": "40",
        "meName": "테스트",
        "meLink": "http://youngcart5.test/bbs/group.php?gr_id=test",
        "meTarget": "self",
        "meOrder": 3,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 41,
        "meCode": "20",
        "meName": "질문답변",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=qa",
        "meTarget": "self",
        "meOrder": 4,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 42,
        "meCode": "30",
        "meName": "쇼핑몰",
        "meLink": "http://youngcart5.test/bbs/group.php?gr_id=shop",
        "meTarget": "self",
        "meOrder": 5,
        "meUse": 1,
        "meMobileUse": 1,
"submenus": [
    {
        "meId": 44,
        "meCode": "3020",
        "meName": "갤러리",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=gallery",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 43,
        "meCode": "3010",
        "meName": "자유게시판",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=free",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
],
    }
]

 

meCode가 2자리인 것만 따로 읽어서 main_menu로 만들고, 4자리짜리만 sub_menu로 만들어서, 2개를 조합하는 자바스크립트를 어떻게 하면 될까요?

 

아니면 첫번째와 같이 한번에 읽어서 처리하는 방법이라도..

 

이 질문에 댓글 쓰기 :

답변 1


const data = [
    {
        "meId": 39,
        "meCode": "1020",
        "meName": "공지사항",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=notice",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 44,
        "meCode": "3020",
        "meName": "갤러리",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=gallery",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 46,
        "meCode": "50",
        "meName": "회사소개",
        "meLink": "http://youngcart5.test/bbs/content.php?co_id=company",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 37,
        "meCode": "10",
        "meName": "자유게시판",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=free",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 38,
        "meCode": "1010",
        "meName": "갤러리",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=gallery",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 43,
        "meCode": "3010",
        "meName": "자유게시판",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=free",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 40,
        "meCode": "1030",
        "meName": "질문답변",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=qa",
        "meTarget": "self",
        "meOrder": 3,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 45,
        "meCode": "40",
        "meName": "테스트",
        "meLink": "http://youngcart5.test/bbs/group.php?gr_id=test",
        "meTarget": "self",
        "meOrder": 3,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 41,
        "meCode": "20",
        "meName": "질문답변",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=qa",
        "meTarget": "self",
        "meOrder": 4,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 42,
        "meCode": "30",
        "meName": "쇼핑몰",
        "meLink": "http://youngcart5.test/bbs/group.php?gr_id=shop",
        "meTarget": "self",
        "meOrder": 5,
        "meUse": 1,
        "meMobileUse": 1
    }
].filter(data => data.meCode.length === 2)

 

필터를 활용하면 조건에 맞는 배열만 리턴받을 수 있습니다

질문이 조금 잘못 되었네요.
배열안에 submenus로 넣는 것이 질문입니다.

하나의 배열을 가지고 10 안에 1010, 1020, 1030을 넣는 방법이나.
두개의 배열(하나는 2자리짜리만, 다른 하나는 4자리짜리만 있는 배열)로 submenus를 넣는 방법에 대한 것입니다

sort를 활용해보세요


[
    {
        "meId": 39,
        "meCode": "1020",
        "meName": "공지사항",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=notice",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 44,
        "meCode": "3020",
        "meName": "갤러리",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=gallery",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 46,
        "meCode": "50",
        "meName": "회사소개",
        "meLink": "http://youngcart5.test/bbs/content.php?co_id=company",
        "meTarget": "self",
        "meOrder": 1,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 37,
        "meCode": "10",
        "meName": "자유게시판",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=free",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 38,
        "meCode": "1010",
        "meName": "갤러리",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=gallery",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 43,
        "meCode": "3010",
        "meName": "자유게시판",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=free",
        "meTarget": "self",
        "meOrder": 2,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 40,
        "meCode": "1030",
        "meName": "질문답변",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=qa",
        "meTarget": "self",
        "meOrder": 3,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 45,
        "meCode": "40",
        "meName": "테스트",
        "meLink": "http://youngcart5.test/bbs/group.php?gr_id=test",
        "meTarget": "self",
        "meOrder": 3,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 41,
        "meCode": "20",
        "meName": "질문답변",
        "meLink": "http://youngcart5.test/bbs/board.php?bo_table=qa",
        "meTarget": "self",
        "meOrder": 4,
        "meUse": 1,
        "meMobileUse": 1
    },
    {
        "meId": 42,
        "meCode": "30",
        "meName": "쇼핑몰",
        "meLink": "http://youngcart5.test/bbs/group.php?gr_id=shop",
        "meTarget": "self",
        "meOrder": 5,
        "meUse": 1,
        "meMobileUse": 1
    }
].sort(function(a,b){
    let c = 0;
    if(a.meCode > b.meCode) {
        c = 1;
    }else {
        c = -1
    }
    return c
})

이리 저리 console.log로 찍어 보면서 루프로 돌리고, 검색해서 만들었습니다.

이런 구조가 프런트엔드 단에서 편해야 될텐데..

http://74.208.22.155:3000/api/v1/menu

vuejs, reactjs를 사용하시면서,  이런 JSON구조가 편한지,  아니면 다르게 생각하는 구조가 있는지요?

답변을 작성하시기 전에 로그인 해주세요.
전체 80
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT