[javascript] indexOf와 배열의 findIndex 함수의 차이점

두 함수 indexOf의 차이점과 배열에서 Index 찾기 사이에 혼란 스럽습니다.

문서에 따르면

findIndex-predicate가 true 인 배열에서 첫 번째 요소의 인덱스를 반환하고 그렇지 않으면 -1을 반환합니다.

indexOf-배열에서 처음 나타나는 값의 인덱스를 반환합니다.



답변

주요 차이점은 다음 기능의 매개 변수입니다.

  • Array.prototype.indexOf()첫 번째 매개 변수로 을 예상합니다 . 따라서 기본 유형 (문자열, 숫자 또는 부울)의 배열에서 인덱스를 찾는 것이 좋습니다 .

  • Array.prototype.findIndex()기대 콜백 첫번째 파라미터로한다. 원시 유형이 아닌 배열 (예 : 객체)의 인덱스가 필요하거나 찾기 조건이 단순한 값보다 더 복잡한 경우이 옵션을 사용하십시오.

두 경우의 예는 링크를 참조하십시오.


답변

FindIndex는 조건 자와 일치하는 첫 번째 요소를 찾으려는 경우 유용합니다. W3C의 예에서 고객의 나이가 18 세 이상이면 숫자와 일치 항목이 있습니다.

var ages = [3, 10, 18, 20];

function checkAdult(age) {
    return age >= 18;
}

console.log(ages.findIndex(checkAdult));

콘솔:

2

Array의 indexOf 함수를 사용하여 정확한 요소 인덱스를 찾을 수 있지만 조건자를 전달할 수는 없습니다. 특정 요소를 찾으려면 더 빠릅니다.

var ages = [3, 10, 18, 20];
console.log(ages.indexOf(10));

보고:

1

인덱스 카운팅은 0에서 시작하므로 첫 번째 요소 인덱스는 0입니다.


답변

주요 차이점은 다음 기능의 매개 변수입니다.

->
Array.prototype.indexOf () :

   var fruits = ["Banana", "Orange", "Apple", "Mango"];
   var a = fruits.indexOf("Apple");
   The result of a will be: 2

-> Array.prototype.findIndex () :

       var ages = [3, 10, 18, 20];

       function checkAdult(age) {
        return age >= 18;
       }

       function myFunction() {
         document.getElementById("demo").innerHTML = 
         ages.findIndex(checkAdult);
       }

       The result will be: 2


답변

다음을 사용할 수도 있습니다 includes.

[1, 2, 3].includes(2);      // true
[1, 2, 3].includes(4);      // false
[1, 2, 3].includes(3, 3);   // false

그러나 나는 indexOf방법을 선호합니다 .

var vals = [ "foo", "bar", 42, "baz" ];
if (~vals.indexOf( 42 )) {
  // found it!
}


답변

또 다른 차이점은 findIndex ()를 사용 하면 사용자 가 일부 함수를 적용 하고 테스트를 통과 한 배열의 요소를 찾을 수 있다는 것입니다.

그러나 indexOf () 연산자도 마찬가지입니다 . 사용자는 특정 요소가 배열에 존재하는지 여부를 확인할 수 있습니다.


답변

단순-어떤 종류의 배열 구조를 사용하고 있습니까?

  • 객체의 배열이면 findIndex();
  • 그렇지 않으면 indexOf().

” 오렌지 키를 사용하여 객체 배열 에서 인덱스를 찾고 싶습니다 .

let fruits = [
   { type: "Apple", quantity: 9 },
   { type: "Banana", quantity: 2},
   { type: "Orange", quantity: 8},
   { type: "Pear", quantity: 777}
];

let myIndex = fruits.findIndex(fruit => fruit.type === "Orange"); // Returns 2.

간단한 배열 에서 색인을 찾고 싶습니다 .”

let fruits = [ "Apple", "Banana", "Pear", "Orange"];

let index = fruits.indexOf("Orange"); // Returns 3.


답변

아래 코드를 시도해 볼 수 있습니다.

let city = ['Delhi', 'mumbai']
const a = city.findIndex((item) => 
item.toLowerCase()==='delhi')
console.log(a) // returns 0

let c = city.indexOf('mumbai') // returns 1
console.log(c)