Skip to content
This repository has been archived by the owner on Aug 11, 2021. It is now read-only.

Data Array 구현 #11

Closed
hayunyun opened this issue Nov 9, 2020 · 5 comments
Closed

Data Array 구현 #11

hayunyun opened this issue Nov 9, 2020 · 5 comments

Comments

@hayunyun
Copy link
Collaborator

hayunyun commented Nov 9, 2020

지금 현재 받아오는 acc_id_list의 형태는

{
	"EPI_ISL_449476": {
          "simil_identity": 98.46424,
          "simil_bit_score": 1234,
      },
	"EPI_ISL_449475": {
          "simil_identity": 98.46,
          "simil_bit_score": 1230,
      },
	…
}

이러한 형식인데요. 이것을 이용해서 제가 구현하고자 하는 data는 다음과 같습니다.

Data = [ {index:1, seq_id: "EPI_ISL_449476", similarity: 98.46424, bitscore: 1234},
	{index:2, seq_id: "EPI_ISL_449475", similarity: 98.46, bitscore: 1230},
	…
	]

이렇게만 만들면 Bootstrap table을 구현할 수 있고, Bootstrap에서 제공하는 Expanded row와 sorting 기능을 이용할 수 있는데.. 쉽지 않더라고요.
Bootstrap이 아니더라도 table accordion 등의 기능을 이용하려면 다음과 같이 데이터를 정의해두는 게 좋을 것 같습니다. 지금의 테이블로 여러 시도를 해봤지만 다소 무리가 있는 듯 합니다.
그런데 주어진 acc_id_list가 이중 딕셔너리라서 사용하기가 조금 까다롭더라구요. 검색도 쉽지 않고 리액트에서는 배열 값 추가하는 것도 push가 안 된다고 하고… 딕셔너리 추가는 더더욱이 안되구요ㅠㅠ 정말 혼자 해결해서 기능 구현을 하려고 했는데 완전히 막혀버렸습니다.. 혹시 이 부분만 같이 고민해 주실 수 있으실까요? 저도 계속 고민하고, 해결되면 빠르게 마무리 짓도록 하겠습니다..!
(index라는 이름의 key는 굳이 필요한 건 아니지만 있다면 테이블을 짜기에 더 용이해서 넣어두었습니다.)

@SausageTaste
Copy link
Owner

존재하는 데이터의 구조만 바꿔달라는 요청인 것 같네요.
그런데 타입스크립트로 그냥 구현 하면 되는 거 아닌가요?
함수 하나만 만들면 될 것 같은데.

데이터를 저런 형식으로 반환하게끔 Django에 새로운 method를 만드는 것은 어려운 건 아닙니다만.
괜히 유지보수 하는 코드 늘어나는 것도 부담이고, 저 큰 데이터를 서버에서 한번 더 처리해야 하는 것도 부담이라서요.

@SausageTaste
Copy link
Owner

그리고 index 필드는 필요없습니다
for (const i in a_list) {} 이렇게 하면 저 i에는 element가 아니라 index 번호가 할당됩니다.

const a_list = ["a", "b", "c"];
for ( const i in a_list ) {
    console.log(i);
}

이 코드의 결과물은

a
b
c

가 아니라

0
1
2

가 됩니다.

@hayunyun
Copy link
Collaborator Author

네 타입스크립트에서 구현하려는거예요! 함수를 짜고 있는데, 잘 나오지 않아서 issue에 올린 겁니다 ㅠㅠ index는 저도 굳이 넣어도 될 것 같진 않는데, 한 array에 같이 들어가는게 표를 짜기 더 좋아서 언급해두었습니다.

@SausageTaste
Copy link
Owner

function modify_data_struct(src: any) {
    const result = [];

    for (const acc_id in src) {
        result.push({
            acc_id: acc_id,
            simil_identity: src["acc_id"]["simil_identity"],
            simil_bit_score: src["acc_id"]["simil_bit_score"],
        });
    }

    return result;
}

이런 식으로 하면 안 됩니까?

@hayunyun
Copy link
Collaborator Author

헐 해결된것같습니다!

        const lists = this.state.acc_id_list
        const seq_list = [];

        for (const acc_id in lists) {
            seq_list.push({
                acc_id: acc_id,
                simil_identity: lists[acc_id][cst.KEY_SIMILARITY_IDENTITY],
                simil_bit_score: lists[acc_id][cst.KEY_SIMILARITY_BIT_SCORE],
            });
        }

함수 말고, 말씀해주신 형식에서 아주 살짝 변형했습니다!
저번에 작성해주신 table for문이랑 비슷해서 저도 비슷하게 시도는 계속 해 봤던것 같은데...ㅎㅎ머쓱하네요
감사합니다. 덕분에 오늘 내로 완성할 수 있을 것 같습니다 :)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants