티스토리 뷰
반응형
참고
Array.prototype.some() - JavaScript | MDN
Array.prototype.some() some() 메서드는 배열 안의 어떤 요소라도 주어진 판별 함수를 통과하는지 테스트합니다. 참고: 빈 배열에서 호출하면 무조건 false를 반환합니다. The source for this interactive example i
developer.mozilla.org
- some은 배열 안의 어떤 요소라도 주어진 함수를 통과하는지 확인한다.
- 하나라도 충족할 경우 true를 반환한다.
- 빈 배열에서 호출시 항상 false라고 함!
- some은 매개변수로 주어진 callback이 true를 반환하는지 확인하기 위해 배열 각 요소를 순회하며 callback을 수행한다.
- 참인 요소를 발견한 경우 true를 반환하고, 하나도 없는 경우에는 false를 반환한다.
- some 메서드의 형식은 다음과 같다.
Array.prototype.some(callback, thisArg);
// callback 예시
function someCallback(currVal, idx, srcArr) {
return currVal === 'ingnoh';
}
- callback : 각 요소를 검사할 함수.
- currVal(현재값) : 순회 중 마주친 현재 요소(배열 인덱스 0부터 시작)
- idx(배열 인덱스) : 선택적인 값이며, currVal 요소의 인덱스로 사용
- srcArr(원본 배열) : 선택적인 값이며, some으로 검증하고자 하는 원본 배열
- thisArg : 선택적인 값이며, 기본 값은 undefined. callback을 실행할 때 this로 사용할 값이 된다.
예시. MQTT 토픽 구조에서 다음을 검증
- 토픽은 /로 구분된다.
- 토픽의 각 계층은 자유로이 작성하되, +는 특수한 의미를 갖는 예약문자로 사용한다.
- +는 해당 계층에 '+' 한 글자만 존재할 때 의미를 가지며, 다른 경우에는 사용할 수 없도록 구현하고자 한다.
- 즉, a/+/ingnoh/+는 가능하지만 a/++/ingnoh/+는 사용할 수 없어야 한다.
- 이를 위해 토픽의 값이 유효한지 아닌지 some을 통해 검증해보자.
let a = '+/d/s/d+/f/g/';
let b = '/d/+s/+/f/g/e/ea/sd';
let c = '/d/s/d/f/+/1/23/5/';
let d = 'a/d/s/d/f/+//23/5/';
/* 유효성
a = d+ 때문에 유효하지 않아야 한다.
b = +s 때문에 유효하지 않아야 한다.
c = 유효하다.
d = 유효하다.
*/
function isValid(topic) {
// some은 충족되는 요소가 하나라도 있을 때 true를 반환한다.
return !topic.split('/').some((level) => {
return level.includes('+') && level !== '+';
});
}
console.log(isValid(a));
console.log(isValid(b));
console.log(isValid(c));
console.log(isValid(d));
/* 실행 결과
false
false
true
true
*/
- 단순히 배열을 순회하고 검증하는 경우라면 reduce보다 간단하다.
'Dev. > javascript' 카테고리의 다른 글
[JS] Airbnb 스타일 가이드 1 - 8. (0) | 2021.04.01 |
---|---|
[JS] Airbnb 스타일 가이드 12 - 15. (0) | 2021.04.01 |
[JS] 배열과 reduce (0) | 2021.03.31 |
[JS] 프로토타입(prototype) (0) | 2021.03.30 |
[JS] Array-like(유사 배열) / Array(배열) (0) | 2021.03.29 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Puppeteer
- pgloader
- Docker
- javascript
- Database
- hashicorp
- terraform
- mysql
- Spring Cloud Config
- JEST
- Gradle
- AWS IoT
- Node.js
- spring boot
- Linux
- jQuery
- Java
- kotlin
- JPA
- Git
- Vault
- AWS
- postgresql
- RancherDesktop
- eureka
- 코딩테스트
- etc
- react
- shell
- IntelliJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함