arr.every()

11317 단어 JavaScriptJavaScript

💡 arr.every()

: 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트, Boolean 값을 반환

💜 구문

arr.some(callback[, thisArg])
  • 매개변수
  1. callbackFn
    : 각 요소를 시험할 함수, 아래의 세 인자를 받음
    • currentValue
      : 처리할 현재 요소
    • index
      : optional
      : 처리할 현재 요소의 인덱스
    • array
      : optional
      : every 을 호출한 배열
  2. thisArg
    : optional
    : callbackFn 을 실행할 때 this로 사용하는 값
  • Return 값
    : callbackFn 이 모든 배열 요소에 대해 참인(truthy) 값을 반환하는 경우 true, 그 외엔 false

💜 특성

  • every() 는 callback 이 거짓을 반환하는 요소를 찾을 때까지 배열에 있는 각 요소에 대해 한 번씩 callbackFn 함수를 실행
  • 해당하는 요소를 발견한 경우 every 는 즉시 false 를 반환, 그렇지 않으면, 즉 모든 값에서 참을 반환하면 true를 반환
  • 빈 배열에서 호출하면 무조건 true를 반환
  • 할당한 값이 있는 배열의 인덱스에서만 callbackFn을 호출하며, 삭제했거나 값을 할당한 적이 없는 인덱스에서는 호출하지 않음
  • callback 은 다음의 세 인수와 함께 호출
    • 요소 값
    • 요소 인덱스
    • 순회하고 있는 배열
  • every() 는 호출한 배열을 변형하지 않음
  • every()가 처리하는 요소의 범위는 callbackFn 의 첫 호출 전에 설정
    • every 호출 이후로 배열에 추가하는 요소는 callbackFn 이 방문하지 않음
    • 배열에 존재하는 요소가 변경된 경우, callbackFn 에 every()가 방문하는 시점의 값을 전달
    • 삭제한 요소는 방문하지 않음

💜 예시

  • 예시 1. 모든 배열 요소의 크기 테스트
const arr1 = [2, 5, 8, 1, 4];
const arr2 = [12, 25, 48, 100, 45];

console.log(arr1.every(x => x > 10)); // false
console.log(arr2.every(x => x > 10)); // true
  • 예시 2. 초기 배열에 영향주기(수정, 추가, 삭제)
// 요소 수정
let arr = [1, 2, 3, 4];
arr.every( (el, idx, arr) => {
  arr[idx+1] -= 1
  console.log(`[${arr}][${idx}] -> ${el}`)
  return el < 2
})

// [1,1,3,4][0] -> 1
// [1,1,2,4][1] -> 1
// [1,1,2,3][2] -> 2

// 요소 추가
let arr = [1, 2, 3];
arr.every( (el, idx, arr) => {
  arr.push('new')
  console.log(`[${arr}][${idx}] -> ${el}`)
  return el < 4
})

// [1,2,3,new][0] -> 1
// [1,2,3,new,new][1] -> 2
// [1,2,3,new,new,new][2] -> 3

// 요소 삭제
let arr = [1, 2, 3, 4];
arr.every( (el, idx, arr) => {
  arr.pop()
  console.log(`[${arr}][${idx}] -> ${el}`)
  return el < 4
})

// [1,2,3][0] -> 1
// [1,2][1] -> 2

좋은 웹페이지 즐겨찾기