본문 바로가기
Javascript

Array.prototype.every()

by 이도현 2021. 11. 16.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/every

 

Array.prototype.every() - JavaScript | MDN

every() 메서드는 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트합니다. Boolean 값을 반환합니다.

developer.mozilla.org

https://www.w3schools.com/jsref/jsref_every.asp

 

JavaScript Array.every() Method

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

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각 요소를 시험할 함수. 다음 세 가지 인수를 받습니다.요소배열에서 처리되는 현재 요소index Optional처리할 현재 요소의 인덱스.array Optionalevery를 호출한 배열.thisArg OptionalcallbackFn을 실행할 때 this로 사용하는 값.

반환 값

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