그누보드 메뉴(g5_menu)를 읽어오면 아래와 같습니다. (me_order를 오름차순으로.)
Copy
[
{
"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자리인 것은 서브메뉴로 앞의 두자리와 매칭되는 메뉴 안으로 집어 넣기)
Copy
[
{
"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개 / 댓글 4개
채택된 답변
+20 포인트
4년 전
Copy
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)
필터를 활용하면 조건에 맞는 배열만 리턴받을 수 있습니다
로그인 후 평가할 수 있습니다
답변에 대한 댓글 4개
4년 전
4년 전
sort를 활용해보세요
[code]
[
{
"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
})
[/code]
[code]
[
{
"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
})
[/code]
4년 전
이리 저리 console.log로 찍어 보면서 루프로 돌리고, 검색해서 만들었습니다.
이런 구조가 프런트엔드 단에서 편해야 될텐데..
http://74.208.22.155:3000/api/v1/menu
vuejs, reactjs를 사용하시면서, 이런 JSON구조가 편한지, 아니면 다르게 생각하는 구조가 있는지요?
이런 구조가 프런트엔드 단에서 편해야 될텐데..
http://74.208.22.155:3000/api/v1/menu
vuejs, reactjs를 사용하시면서, 이런 JSON구조가 편한지, 아니면 다르게 생각하는 구조가 있는지요?
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
배열안에 submenus로 넣는 것이 질문입니다.
하나의 배열을 가지고 10 안에 1010, 1020, 1030을 넣는 방법이나.
두개의 배열(하나는 2자리짜리만, 다른 하나는 4자리짜리만 있는 배열)로 submenus를 넣는 방법에 대한 것입니다