공부하는취준생
824
2020-11-23 14:19:53
4
189

자바스크립트 배열 파싱 질문 드립니다.


안녕하세요~!


//데이터
var array = [ { 
	class : “A”
	, id : 2
	, level : 1
},
{ 
	class : “B”
	, id : 1
	, level : 1
},
{ 
	class : “A”
	, id : 2
	, level : 2
},
{ 
	class : “C”
	, id : 4
	, level : 3
},
{ 
	class : “B”
	, id : 1
	, level : 2
}]

// 기존 배열에서 class랑 Id가 같은 것끼리 그룹 번호필드를 추가하여 순차적으로 그룹번호를 부여 하고 싶습니다.

// 결과
var array = [ { 
	class : “A”
	, id : 2
	, level : 1
	, group : 1
},
{ 
	class : “B”
	, id : 1
	, level : 1
	, group : 2
},
{ 
	class : “A”
	, id : 2
	, level : 2
	, group : 1
},
{ 
	class : “C”
	, id : 4
	, level : 3
	, group : 3
},
{ 
	class : “B”
	, id : 1
	, level : 2
	, group : 2
}]

기존 배열에서 class랑 Id가 같은 것끼리 그룹 번호필드를 추가하여 순차적으로 그룹번호를 부여 하고 싶습니다.

맵도 있고 리듀스도 있고 파인드 인덱스도 있고 여러가지 함수가 있는데

어떤 방법으로 할 수 있을까요?

0
  • 답변 4

  • ISA
    4k
    2020-11-23 14:30:59

    그냥 맵돌리면서 그룹키를 해싱하시죠. 해쉬테이블이나 객체(js에서는 객체 자체가 해쉬테이블 방식으로 만들어집니다)쓰시면 됩니다. Result= Result.map obj => if obj hash.has class group obj.group = num 이런식으로

  • 공부하는취준생
    824
    2020-11-23 14:40:09

    @ISA

    어렵네요..ㅜ

  • 밋꾸
    504
    2020-11-23 16:04:29 작성 2020-11-23 16:07:29 수정됨

    위와같이 이렇게 대충 나오긴함니다.. 더조은 코드는 능력자분께..

    ----

    사진 업로드가안대네영 ㅋㅋㅋ 로그 찍어보세여

    let groupObj = {};
    let groupNum = 1;
    array.map(item=>{
        let key = `${item.class}/${item.id}`;
        item.group = groupObj[key] || (groupObj[key] = groupNum) && groupNum++;
    });
  • 피자7
    637
    2020-11-23 18:08:06

    array.map(el => {

     //el은 배열의 각요소입니다

      el.group = //여기다가 필요에맞게 그룹을 정하는 로직 쓰세요

    })



  • 로그인을 하시면 답변을 등록할 수 있습니다.