새로운 'findIndex' 메서드를 사용하여 배열에서 항목 찾기 🔎

배열에서 항목을 검색하는 것은 수년 동안 토론의 요점이었고 개체를 검색하는 가장 좋고 최적의 방법에 대한 논쟁은 효과적이고 그렇지 않은 많은 솔루션이 있었습니다.

그러나 findIndex의 완전히 새로운Array.prototype 메서드를 사용하면 고유한 비교 콜백 메서드를 사용하여 개체를 유연하게 검색할 수 있습니다.

무엇


findIndex 메서드는 전달된 콜백 메서드가 true 를 반환하면 배열의 첫 번째 요소 인덱스를 반환하고, 그렇지 않으면 -1 를 반환합니다.

const isPerfectSquare = (num) => {
  return num > 0 && Math.sqrt(num) % 1 === 0;
}

console.log([1, 3, 8, 9, 12].findIndex(isPerfectSquare)); // 1
console.log([1, 6, 7, 10, 14].findIndex(isPerfectSquare)); // -1


알아야 할 두 가지 사실이 있습니다.
  • 이 메서드는 일치하는 첫 번째 요소를 찾으면 실행되지 않습니다.
  • 원래 배열을 변경하지 않습니다.

  • 통사론




    array.findIndex(function(currentValue, index, arr), thisValue);
    


    매개변수



  • function: 이것은 당신이 찾고 있는 요소와 일치하는 조건을 확인하는 콜백 함수입니다.

  • currentValue: 현재 요소의 값을 보유합니다.

  • index: 이것은 현재 인덱스를 보유하는 선택적 매개변수입니다.

  • arr: 이것은 현재 요소가 속한 배열을 보유하는 선택적 매개변수이기도 합니다.

  • thisValue: 또 다른 선택적 매개변수로, 값이 전달되면 함수 내에서 this 값으로 사용되며, 그렇지 않으면 undefined가 전달됩니다.

  • 반환 값



    찾은 항목의 인덱스를 반환하거나 콜백 기능이 충족되지 않으면 -1를 반환합니다.

    후드 아래에서 어떻게 작동합니까?


    findIndex가 하나 또는 두 개의 인수로 호출되면 다음 단계가 실행됩니다.
  • 하자 O ? ToObject(this value)
  • 하자 len ? LengthOfArrayLike(O)
  • IsCallback(predicate)false인 경우 TypeError 예외가 발생합니다
  • .
  • k를 0으로
  • 반복하는 동안 k < len
  • 하자 Pk ! ToString(k)
  • 하자 kValue ? Get(O, Pk)
  • 하자 testResult ! ToBoolean(? Call(predicate, thisArg, « kValue, k, O »))
  • testResulttrue이면 k를 반환합니다.
  • kk + 1로 설정

  • 리턴-1
  • 좋은 웹페이지 즐겨찾기