개씹초보 자바스크립트 공부 중인데
각자 어떤 상황에서 써야하는건질 모르겠음
채찍피티 말로는 객체 내 객체가 성능면에서 더 좋다는데
어떤 값을 토대로 키를 찾는다든지, 아니면 키를 어떤 값이랑 비교해야할 일이 많아지면 객체 내 객체 형태가 오히려 구린거같아서...
예를 들어서
대장장이 npc한테 어떤 아이템을 줬을 때
그 아이템이 부러진 무기라면 수리해준다는 식으로 짰을때
배열 안에
{
이름: 대검,
데미지: 10,
부러진 무기: 반쪽 대검
}
이라는 데이터를 만들어놓으면
아이템이 부러진 무기인지 판별하기 위해
아이템이 부러진 무기의 값과 일치하는 객체가 있는지 find로 찾고
그 다음엔 객체.이름 같은 식으로 "대검" 을 금장 찾을 수 있는데
대검: {
데미지: 10,
부러진 무기: 반쪽 대검
}
으로 만들어두면
아이템이 부러진 무기인지 판별하기 위해 find 하는거까진 똑같고, 이렇게 연산한 걸 활용못하고
다시 대검 이라는 키를 찾으려고 한번 더 find를 써서 연산해야 느낌이라...
때에 따라 다른데 이 경우에는 나라면 전자
대검: { 이름: “대검”, …} 하면 안되나
이 생각도 들더라 ㅋㅋㅋ 이렇게 해도 되는건지 진짜로 몰라서 그렇지 딱 하고 싶은게 이거긴 함 객체 내 객체가 성능상 이점이 있는게 사실이면 + 값으로 키를 탐색하는 것보다 더 유리한게 맞으면 이렇게 짜는게 내 최선일거같음
https://www.mycompiler.io/view/GrP6xfcFsRc
이런걸
원한거임?
맞는거같음 이 코드에서도 볼수있는데 Items[findItem.이름] 으로 객체를 찾아서 저장할 수 있는게 객체 내 객체 형태의 장점같다고 생각했음 배열 내 객체에서는 find로 찾아야 하니까...
갯수 별로 옶으면 걍 배열에 루프돌려도 충분함 아니면 아이템 종류: [] 이런식으로 하던가
무기가 정확히 하나라면 { 무기 : { ... } } 이게 자연스럽고
최신 자바스크립트에서는 Map이라는 객체도 자주 사용해요. 일반 객체({})와 비슷하게 키-값 쌍을 저장하지만 몇 가지 장점이 있어요.키로 어떤 타입이든 (객체, 함수 등) 사용할 수 있어요 (일반 객체는 주로 문자열이나 심볼).데이터를 넣은 순서를 기억해요.아이템 개수를 .size로 쉽게 알 수 있어요.데이터를 추가하거나 삭제할 때 성능이 좀 더 예측 가능해요.Map을 사용해도 값으로 키를 찾는 건 여전히 반복(O(n))이 필요하지만, 키로 값을 찾는 건 객체처럼 빨라요(O(1)).
최종 정리 어떤 구조가 무조건 더 좋다고 말하기는 어려워요. 어떤 작업을 주로 할 것인지에 따라 가장 적합한 구조를 선택하는 게 중요해요. 고유한 키(ID, 이름 등)로 데이터를 바로 찾아야 할 때는 객체 내 객체 (또는 Map)가 성능 면에서 유리해요. 특정 조건(값)으로 데이터를 검색하거나, 데이터 목록 전체를 다루거나, 순서가 중요하다면 배열 내 객체가 더 자연스럽고 코드가 간결할 수 있어요. 사용자님의 대장장이 예시가 여기에 해당해요! 성능도 중요하지만, 코드를 읽기 쉽고 나중에 고치기 쉽게 짜는 것도 매우 중요해요. 데이터 양이 아주 많지 않다면, 약간의 성능 차이보다는 개발 편의성을 우선하는 게 좋을 때도 많아요. 헷갈렸던 부분이 좀 풀리셨기를 바랍니다! 자바스크립트 공부 계속 화이팅하세요
와... 감사합니다
왜 객체랑 배열이 니껀데
추후에 데이터를 어떻게 다루고 조작할 것인지에 따라 나뉘지
하나만 딱 정해서 하는게 아니라 유동적으로 하는게 맞겠네 윗댓들 설명대로 각 장단점이 있고 어떤 상황일때 뭐가 더 편한지 생각하면서 해봐야겠다
https://justpaste.it/i55mm
대검
자체를 key로 만들면 여러개의 대검을 가지지 못하자너
일반적으로 위처럼 아이템 타입을 만들어서 배열로 가짐
이건 아이템 뿐만 아니라 메시지 내역, 친구 목록 같은 거의 모든 데이터에 해당하는 거임
그리고 님이 가공을 원하는 아이템만 find로 찾아서 아이템 객체 자체를 넘기는편임
성능같은 문제는 배열이 x만개단위로 넘어가는 상황아니면 전혀 신경쓰지 않아도 된다고봄
ㄱㅅㄱㅅ 생각을 못했었는데 첫줄부터 맞는말같음