질문 링크: https://leetcode.com/problems/is-object-empty/description/
객체 또는 배열이 주어지면 비어 있으면 반환합니다.
객체나 배열이 JSON.parse의 출력이라고 가정할 수 있습니다.
이런... obj라는 함수에 대한 매개변수로 배열이나 객체를 가져오고 있습니다. (그래, 나도 알아, 정말 창의적인 이름이지만 나중에는 이해가 될 거야!)
우리의 임무는 무엇입니까? 먼저 이 obj가 배열인지 객체인지 알아내기 위해 마법의 코딩 트릭을 수행해 보세요. 그러면 그 지식을 바탕으로 다음에 무엇을 할지 결정하겠습니다.
마지막으로 이 객체/배열이 비어 있는지 확인해야 합니다. 간단하죠? (아니면...)
먼저 해야 할 일: "배열은 기술적으로 JavaScript의 객체입니다." 네! 맞습니다. 배열은 JS에서 특별한 유형의 객체입니다. 그러니 혼동하지 마세요!
객체 감지 101: typeof obj === 'object' && obj !== null을 사용하여 매개변수가 실제로 객체(또는 배열)인지 확인할 수 있습니다. 왜 !== null 부분이 있나요? 음, null은 JS에서 특별한 경우이기 때문입니다. 엄밀히 말하면 객체형이지만 무(無)가 있는 텅 빈 공허와 같습니다. 따라서 만일을 대비하여 이를 제외합니다(문제에서 명시적으로 언급되지 않더라도 좋은 습관입니다).
정의되지 않음 및 null 요소: 개체와 배열 모두 정의되지 않았거나 null인 속성/요소를 가질 수 있습니다. 하지만 걱정하지 마세요. 길이를 확인할 때에도 계속 계산됩니다. 그들은 우리의 검증에서 무료 패스를 얻지 못합니다!
배열인가요?: 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 };
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를 반환합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3