LHJ

I'm a FE developer.

14-5. Array 오브젝트(ES5 기준) / true, false를 반환하는 메소드

05 Dec 2020 » js_beginner

14-5. Array 오브젝트(ES5 기준) / true, false를 반환하는 메소드

every()

구분데이터(값)
data반복 대상
파라미터첫번째 파라미터: 콜백 함수
두번째 파라미터: this로 참조할 오브젝트opt
반환true, false

  • forEach() 처럼 시맨틱 접근
  • 배열의 엘리먼트를 하나씩 읽어가면서

    • false를 반환할 때까지 콜백함수 호출 (forEach와의 차이점)
    • 즉, false가 반환되면 반복 종료
    • false를 반환하지 않으면 true 반환

        var value = [20, 10, 30, 40];
        var fn = function (value, index, array) {
            console.log(value);
            return value > 15;
        }
        var result = value.every(fn);
        console.log("결과:", result);
        // 20
        // 10
        // 결과:false
      
      1. 처음에 20을 읽으면 15보다 크므로 true 반환
        true이므로 다음 엘리먼트를 읽습니다.
      2. 다음의 10은 15보다 작으므로 false 반환
        false이므로 반복을 종료합니다.
      3. 따라서 [30, 40]은 처리하지 않습니다.
      4. result 변수에 false가 할당됩니다.
      5. 배열의 마지막까지 처리했는데 false가 반환되지 않으면 true가 반환되며 result 변수에 설정됩니다.

  • false가 되는 조건이 배열의 앞에 있을 때 효율성 높음
    빨리 끝나니깐!

some()

구분데이터(값)
data반복 대상
파라미터첫번째 파라미터: 콜백 함수
두번째 파라미터: this로 참조할 오브젝트opt
반환true, false

  • every()처럼 시맨틱 접근
  • 단, true를 반환할 때까지 콜백 함수 호출

    • 즉, true가 반환되면 반복 자동 종료
    • true를 반환하지 않으면 false 반환

        var value = [10, 20, 30, 40];
        var fn = function (value, index, array) {
            console.log(value);
            return value > 15;
        }
        var result = value.some(fn);
        console.log("결과:", result);
        // 10
        // 20
        // 결과:true
      
      1. 처음에 10을 읽으면 15보다 작으므로 false 반환
        false이므로 다음 엘리먼트를 읽습니다.
      2. 다음의 20은 15보다 크므로 true 반환
        true이므로 반복을 종료합니다.
      3. 따라서 [30, 40]은 처리하지 않습니다.
      4. result 변수에 true가 할당됩니다.

  • true가 되는 조건이 배열의 앞에 있을 때 효율성 높음
    빨리 끝나니깐!

  1. forEach(), every(), some() 모두 반복을 한다.
  2. 그리고 콜백함수를 호출한다.
  3. 하지만 every, some은 반환값이 무엇인지에 따라 콜백함수 호출을 중지시킬 수 있다.