https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/every
https://www.w3schools.com/jsref/jsref_every.asp
every() 메서드는 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트하고, Boolean 값을 반환한다.
꽤 효용성이 높을 것 같은 메소드라고 생각되는게, 만약 내가 내려 받은 배열에 어떤 필수값이 누락되었거나, 잘못된 데이터가 들어가 있는지 테스트를 한번에 손쉽게 끝낼 수 있을 것 같다.
every() 함수는 모든 것이 다 테스트를 통과하는 경우에 참/거짓을 반환하는 것이고,
만약 하나라도 통과되었는지를 확인하고 싶으면 some() 함수를 사용하면 된다.
구문은 다소 복잡하지만 filter()나 find()를 다뤄봤으면 크게 어려운 것은 없다.
구문
// 화살표 함수
every((element) => { ... } )
every((element, index) => { ... } )
every((element, index, array) => { ... } )
// 콜백 함수
every(callbackFn)
every(callbackFn, thisArg)
// 인라인 콜백 함수
every(function callbackFn(element) { ... })
every(function callbackFn(element, index) { ... })
every(function callbackFn(element, index, array){ ... })
every(function callbackFn(element, index, array) { ... }, thisArg)
매개변수
반환 값
callbackFn이 모든 배열 요소에 대해 참(truthy)인 값을 반환하는 경우 true, 그 외엔 false.
설명
every는 callback이 거짓을 반환하는 요소를 찾을 때까지 배열에 있는 각 요소에 대해 한 번씩 callbackFn 함수를 실행합니다. 해당하는 요소를 발견한 경우 every는 즉시 false를 반환합니다. 그렇지 않으면, 즉 모든 값에서 참을 반환하면 true를 반환합니다.
참고: 빈 배열에서 호출하면 무조건 true를 반환합니다!
할당한 값이 있는 배열의 인덱스에서만 callbackFn을 호출합니다. 삭제했거나 값을 할당한 적이 없는 인덱스에서는 호출하지 않습니다.
callbackFn은 요소의 값, 해당 요소의 인덱스 및 순회하고 있는 배열 세 가지 인수와 함께 호출됩니다.
thisArg 매개변수를 every에 제공한 경우 callbackFn의 this로 사용됩니다. 그 외엔 undefined값을 사용합니다. 최종적으로 callbackFn이 볼 수 있는 this의 값은 함수가 볼 수 있는 this를 결정하는 평소 규칙을 따릅니다.
every는 호출한 배열을 변형하지 않습니다.
every가 처리하는 요소의 범위는 callbackFn의 첫 호출 전에 설정됩니다. every 호출 이후로 배열에 추가하는 요소는 callbackFn이 방문하지 않습니다. 배열에 존재하는 요소가 변경된 경우, callbackFn에 every가 방문하는 시점의 값을 전달합니다. 삭제한 요소는 방문하지 않습니다.
every는 (이산)수학에서 전칭(∀) 정량자(quantifier, 한정자)처럼 행동합니다. 특히, 빈 배열에 대해서는 true를 반환합니다. (이는 공집합의 모든 요소가 어떠한 주어진 조건도 만족하는 공허한 참입니다.)
간단한 예시
function isBigEnough(element, index, array) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // false
[12, 54, 18, 130, 44].every(isBigEnough); // true
조금 복잡한 부분은 원문을 참조하고 나는 실제로 필요할만한 예제만 하나 만들어 두려한다.
const isKoreanName = (currentValue) => /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/.test(currentValue.realname);
const arr_test = [{id : 1 , name : '카리나', realname : '유지민', team : 'aespa'}
,{id : 2 , name : '윈터', realname : '김민정', team : 'aespa'}
];
console.log(arr_test.every(isKoreanName));//true
arr_test.push({id : 3 , name : '닝닝', realname : '宁艺卓' , team : 'aespa'});
arr_test.push({id : 4 , name : '지젤', realname : 'うちなが えり', team : 'aespa'});
console.log(arr_test.every(isKoreanName));//false
'Javascript' 카테고리의 다른 글
ios에서 Javascript로 new Date() 사용시 주의점 (0) | 2022.10.13 |
---|---|
Array.prototype.some() (0) | 2021.11.25 |
Array.prototype.entries() (0) | 2021.11.16 |
Array.prototype.copyWithin() (0) | 2021.11.15 |
Array.prototype.find() (0) | 2021.11.12 |