[LeetCode] 2722. Join Two Arrays by ID

Chobby·2024년 7월 9일
1

LeetCode

목록 보기
34/194

Map을 선언해 최종적인 정렬까지 진행하였음
효율이 잘 나오는 코드들을 살펴보니 대체적으로 Object.assign등을 활용해 병합하는 것을 확인

type JSONValue = null | boolean | number | string | JSONValue[] | { [key: string]: JSONValue };
type ArrayType = { "id": number } & Record<string, JSONValue>;

function join(arr1: ArrayType[], arr2: ArrayType[]): ArrayType[] {
    // 모든 객체를 id를 키로 하는 Map으로 변환
    const mergedMap = new Map<number, ArrayType>();

    // arr1과 arr2의 모든 객체를 순회하며 Map에 추가 또는 병합
    for (const arr of [arr1, arr2]) {
        for (const obj of arr) {
            if (mergedMap.has(obj.id)) {
                // 이미 존재하는 id라면 객체 병합
                mergedMap.set(obj.id, { ...mergedMap.get(obj.id)!, ...obj });
            } else {
                // 새로운 id라면 그대로 추가
                mergedMap.set(obj.id, { ...obj });
            }
        }
    }

    // Map을 배열로 변환하고 id 기준으로 정렬
    return Array.from(mergedMap.values()).sort((a, b) => a.id - b.id);
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글