두 함수 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)