"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > [Leetcode] 객체가 비어 있습니까?

[Leetcode] 객체가 비어 있습니까?

2024-11-04에 게시됨
검색:744

[Leetcode] Is Object Empty

질문 링크: https://leetcode.com/problems/is-object-empty/description/

[문제 설명]

객체 또는 배열이 주어지면 비어 있으면 반환합니다.

  • 빈 객체에는 키-값 쌍이 없습니다.
  • 빈 배열에는 요소가 없습니다.

객체나 배열이 JSON.parse의 출력이라고 가정할 수 있습니다.

[이해 질문]

  1. 이런... obj라는 함수에 대한 매개변수로 배열이나 객체를 가져오고 있습니다. (그래, 나도 알아, 정말 창의적인 이름이지만 나중에는 이해가 될 거야!)

  2. 우리의 임무는 무엇입니까? 먼저 이 obj가 배열인지 객체인지 알아내기 위해 마법의 코딩 트릭을 수행해 보세요. 그러면 그 지식을 바탕으로 다음에 무엇을 할지 결정하겠습니다.

  3. 마지막으로 이 객체/배열이 비어 있는지 확인해야 합니다. 간단하죠? (아니면...)

[핵심사항]

  1. 먼저 해야 할 일: "배열은 기술적으로 JavaScript의 객체입니다." 네! 맞습니다. 배열은 JS에서 특별한 유형의 객체입니다. 그러니 혼동하지 마세요!

  2. 객체 감지 101: typeof obj === 'object' && obj !== null을 사용하여 매개변수가 실제로 객체(또는 배열)인지 확인할 수 있습니다. 왜 !== null 부분이 있나요? 음, null은 JS에서 특별한 경우이기 때문입니다. 엄밀히 말하면 객체형이지만 무(無)가 있는 텅 빈 공허와 같습니다. 따라서 만일을 대비하여 이를 제외합니다(문제에서 명시적으로 언급되지 않더라도 좋은 습관입니다).

  3. 정의되지 않음 및 null 요소: 개체와 배열 모두 정의되지 않았거나 null인 속성/요소를 가질 수 있습니다. 하지만 걱정하지 마세요. 길이를 확인할 때에도 계속 계산됩니다. 그들은 우리의 검증에서 무료 패스를 얻지 못합니다!

  4. 배열인가요?: Array.isArray(obj)를 사용하여 매개변수가 배열인지 확인할 수 있습니다. 하지만 객체인지 다시 확인할 필요는 없습니다. 이미 이전에 확인했습니다.

[솔루션 코드]

var isEmpty = function (obj) {
  if (typeof obj === "object" && obj !== null) { // Check if it's an object and not null
    if (Array.isArray(obj)) { // If it's an array
      return obj.length === 0; // Return true if it's empty
    } else { // If it's an object
      return Object.keys(obj).length === 0; // Return true if there are no keys
    }
  }
  return false; // If it's neither an object nor an array, return false
};

[Breaking It Down... 더 나아가]

1단계: 객체인지 확인
먼저 typeof obj === 'object' && obj !== null을 사용하여 입력이 null이 아닌 객체인지 확인합니다. (우리 모두는 typeof null === 'object가 JavaScript의 이상한 특징 중 하나라는 것을 알고 있기 때문입니다. 감사합니다, JavaScript!)

2단계: 배열인가요?
Array.isArray(obj)를 사용하여 배열과 일반 객체를 구별합니다. 배열에는 길이 속성이 있으므로 obj.length === 0인지 직접 확인할 수 있습니다.

3단계: 객체인가요?
배열이 아닌 경우 Object.keys(obj).length === 0을 사용하여 객체인지 확인합니다. 이 메서드는 객체에 있는 키의 개수를 반환합니다. 열쇠가 없나요? 비어있어요!

4단계: 기본 사례
입력이 객체가 아닌 경우(또는 null인 경우) 질문에 객체 또는 배열로만 작업한다고 명시되어 있으므로 false를 반환합니다.

릴리스 선언문 이 글은 https://dev.to/luvsense/leetcode-2727-is-object-empty-5h8k?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3