인프런 커뮤니티 질문&답변

김로인님의 프로필 이미지
김로인

작성한 질문수

React로 NodeBird SNS 만들기

제로초님

작성

·

281

0

제로초님 알고리즘 적으로 궁금한게 있어서 질문 남깁니다.

예를 들어 

이러한 객체가 있습니다.

var aa = [

            {

                seq: 1,

                user_id: "admin",

                artist:"Bl",

                log_id: "안녕",

            },

            {

                seq: 1,

                user_id: "admin",

                artist:"Bl",

                log_id: "바이",

            }

]

이러한 객체를 

{

            seq : 1,

            user_id: "admin",

            artist:"Bl",

            log: [ {log_id: 안녕}, {log_id: 바이} ]

}

이렇게 중복 되는 부분을 없애 주고 아닌 것들은  log: [ {log_id: 안녕}, {log_id: 바이} ]이런식으로 묶어 주려고 하는데 

어떤식으로 처리 하면 될런지 아무리 제로초님 강의를 보고 해도 아이디어가 떠오르질 않아서 질문 남기게 되었습니다.

답변 4

0

김로인님의 프로필 이미지
김로인
질문자

감사합니다!

const arr = [];

        for (obj of aa) {

            const idx =  arr.findIndex((v) => v.seq === obj.seq)

            

            if (idx > -1) {

                // console.log([...arr[idx].Loglog_id, obj.Loglog_id])

                console.log([obj.Loglog_id])

                arr[idx].Loglog_id = Array.isArray(arr[idx].Loglog_id) ? [...arr[idx].Loglog_id, obj.Loglog_id] : [arr[idx].Loglog_id, obj.Loglog_id]

                // true라면 스프레드 문법으로 arr[idx].Loglog_id를 넣어주고 추가로 해당 idx의 obj.Loglog_id                //   값을 넣어주고 

                // false 라면 arr[idx].Loglog_id 값과 해당 idx의 obj.Loglog_id값을 넣어주어 주는 형식 

            } else {

                arr.push(obj);

            }

        }

으로 코드 분석 했는 데 맞을까요???

그리고

앞에

0: {id: "바이"}

1: {id: "헐퀴"} 

id라는 키값을 넣어 주고 싶을때는 어떻게 해야 하나요??

[ {  id: ...arr[idx].Loglog_id, obj.Loglog_id }]

이런식으로 하니 스프레드 문법으로 에러가 나더라구여 

[{ id: arr[idx].Loglog_id, obj.Loglog_id}]

이런식으로 넣으면 토큰에러가 나구여 ㅠ.ㅠ

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

const arr = [];

for (obj of aa) {
  const idx =  arr.findIndex((v) => v.seq === obj.seq)
  if (idx > -1) {
    arr[idx].log_id = Array.isArray(arr[idx].log_id) ? [...arr[idx].log_id, obj.log_id] : [arr[idx].log_id, obj.log_id]
  } else {
    arr.push(obj);
  }
}

0

김로인님의 프로필 이미지
김로인
질문자

seq로 묶어서 처리 하려고 하는데 

var aa = [

            {

                seq: 1,

                user_id: "admin",

                artist:"Bl",

                log_id: "안녕",

            },

            {

                seq: 1,

                user_id: "admin",

                artist:"Bl",

                log_id: "바이",

            },

            {

                seq: 2,

                user_id: "test",

                artist:"sd",

                log_id: "할룽",

            },

            {

                seq: 2,

                user_id: "test",

                artist:"sd",

                log_id: "오딩",

            },

{

                seq: 3,

                user_id: "test",

                artist:"sd",

                log_id: "오딩",

            }

]

이런 array안에 객체 4개가 있을떄는

결과 

[

            {

                seq : 1,

                user_id: "admin",

                artist:"Bl",

                log: [ {log_id: 안녕}, {log_id: 바이} ]

            },

            {

                seq : 2,

                user_id: "test",

                artist:"sd",

                log: [ {log_id: 할룽}, {log_id: 오딩} ]

            },

{

                seq: 3,

                user_id: "test",

                artist:"sd",

                log_id: "오딩",

            }   

]

이런식으로 같은 seq 끼리만 묶고 같은 seq에서 log만 이렇게 묶으려고 생각 하고 있습니다.

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

이게 log만 달라지는 건가요? seq나 artist가 달라지면 어떻게 묶으실거에요??

김로인님의 프로필 이미지
김로인

작성한 질문수

질문하기