이번에는 lodash에서 사용하는
isEmpty()에 대하여 알아봅니다.
# isEmpty() 알아보기
어떤 기능을 할 수 있는지 알아보면
isEmpty()는
값이 비어있는지... 즉, empty 상태인지를 확인하여 그 결과를 boolean으로 반환해줍니다. 즉 값이 있다면 true를 반환하고 없다면 false를 반환하죠. 그럼
isEmpty()의 장점은 무엇일까요? 간단하게 아래와 같습니다.
- 객체의 프로퍼티의 존재를 확인 가능
- 배열의 경우 내부 개수를 확인함
- Map, Set 등의 여러 타입에 적용가능
이처럼 적용이 가능합니다. 가장 큰 장점은 여러 값을 가지는 배열과 객체 타입의 경우에 적용할 수 있다는 점이죠. 그럼 아래는 간단한 예제입니다.
[[ 알아둘 점 ]]
참고로 isEmpty()는 숫자(Number) 타입의 존재 여부를 확인하기 위해서 적용할 수 없습니다. 즉
값이 숫자인 경우 항상 true를 반환하게 되므로 이 경우 다른 방법을 사용하시기 바랍니다. 예를들어 _.isEmpty(1000)의 결과는 true입니다.
! isEmpty() 예제보기
아래는 몇 가지 값들에 대하여 lodash의 isEmpty()를 수행하고 그 결과를 알아보는 예제입니다.
@ 숫자타입
_.isEmpty(-10);
_.isEmpty(0);
_.isEmpty(1);
_.isEmpty(10);
위의 결과는 아래와 같습니다.
true
true
true
true
숫자 타입의 경우 모두 true를 반환하는군요. 0만 true를 반환할 거란 생각을 했다면 다른 차이를 보입니다.
@ boolean 타입
_.isEmpty(true);
_.isEmpty(false);
결과 보기
true
true
불리언의 값 역시 true, false에 상관없이 true를 반환합니다. lodash의 isEmpty()는 아무래도 여러개의 값을 가지는 타입을 목적으로 만들어졌다고 생각하게됩니다.
@ 문자타입
_.isEmpty('');
_.isEmpty('abc');
_isEmpty(' ');
결과입니다.
true
false
false
문자는 조금 다른 결과를 가져왔습니다. 하나의 단어를 각각의 유무로 판단하며 공백 역시 값을 가졌다고 보고 false를 반환합니다.
@ 배열타입
_.isEmpty([]);
_.isEmpty([1, 2]);
결과입니다.
true
false
아무래도 가장 많이 필요한 타입이 바로 배열이라 생각합니다. 일반적으로 length를 반복 사용해야했지만 lodash의 isEmpty()는 이럴 필요가 없어 편리합니다.
@ 객체타입_.isEmpty({});
_.isEmpty({ a: 1 });
결과보기
true
false
객제 역시 프로퍼티를 확인하고 값의 존재 유무를 반환하게 됩니다.
@ 그 외 예제들
결과입니다.
! isNotEmpty() 구현하기
lodash의 isEmpty()의 반대인 isNotEmpty()가 있다면 편리하겠지만 lodash에서 자체 제공하는 메소드는 없습니다 ~ 이런 이유로 몇 가지 방법들이 사용되는데 간략하게 알아봅니다.
하나. ! 기호를 앞에 사용하는 방법
아래와 같이 ! 기호를 앞에 붙여서 사용하는 방법입니다. 코드 길이가 가장 짧은 방법입니다. test라는 객체는 비어있지 않으므로 isNotEmpty()인 경우라면 true를 반환하겠죠.
test = { a: 123 }
!isEmpty(test)
// true
isEmpty(test)
// false
둘. negate()를 사용하는 방법
이 방법은 lodash를 사용하여 반대의 값을 반환하는 함수를 추가로 만들어 사용하는 방법입니다.
negate()는 함수를 인자로 받고 새로운 함수를 반환하게 됩니다.
isNotEmpty = _.negate(_.isEmpty)
isNotEmpty(test)
이 방법도 간단하며 코드상 좀 더 명확하게 기능을 확인할 수 있습니다.
여기까지 lodash의
isEmpty()에 대하여 알아보았고 그 반대인 isNotEmpty()에 대하여도 간략하게 확인했습니다.