[😃, 🏀, 🍎, 🍇, 🐵].findIndex(function(찾는_요소) {
    return 찾는_요소 === 과일;
}); // 👉 2

// 이 배열에서 찾는 요소의 조건인 과일(🍎, 🍇) 중
// 첫 번째 과일(🍎)의 **인덱스(2)**가 반환됩니다.
// 배열을 생성합니다.
const numbers = [1, 3, 7, 4, 6, 8];

// 조건(짝수)을 만족하는 첫 번째 요소의 인덱스를 찾습니다.
const firstEvenIndex = numbers.findIndex(function(num) {
    return num % 2 === 0; // 짝수인지 확인
});

// 결과를 출력합니다.
// 조건(짝수)을 만족하는 첫 번째 요소는 4이고,
// 해당 요소의 인덱스는 3입니다.
console.log(firstEvenIndex); // 출력: 3
arr.findIndex(callbackFn[, thisArg])
// 화살표 함수
findIndex((element) => { /* … */ })
findIndex((element[, index]) => { /* … */ })
findIndex((element[, index[, array]]) => { /* … */ })

// 콜백 함수
findIndex(callbackFn)
findIndex(callbackFn[, thisArg])

// 인라인 콜백 함수
findIndex(function (element) { /* … */ })
findIndex(function (element[, index]) { /* … */ })
findIndex(function (element[, index[, array]]) { /* … */ })
findIndex(function (element[, index[, array]]) { /* … */ }[, thisArg])
callbackFn(element[, index[, array]])
/**
 * 콜백 함수
 *
 * @param {*} element 배열의 각 요소
 * @param {number} index 배열의 인덱스 (선택적)
 * @param {Array} array 원본 배열 (선택적)
 * @return {boolean} 필터링 조건을 충족하면 true, 그렇지 않으면 false 반환
 *
 * 콜백 함수는 기명 함수(사용자 정의 함수)나 익명 함수 등으로 사용할 수 있습니다.
 * (당연히) 모든 콜백 함수는 화살표 함수로 사용할 수 있습니다.
 */

/* 콜백 함수를 기명 함수를 사용할 경우 */
function callbackFn(element[, index[, array]]) { // 기명 함수 정의
	// return 문을 사용하여 조건을 정의합니다.
}

arr.findIndex(callbackFn); // 정의한 기명 함수명을 매개변수에 직접 전달

/* 콜백 함수를 익명 함수로 사용할 경우 */
arr.findIndex(function (element[, index[, array]]) {
    // return 문을 사용하여 조건을 정의합니다.
});
// 배열에 특정 요소의 존재 유무 확인
// 배열에서 조건을 만족하는 요소의 인덱스를 이용해
// 존재 여부를 판별할 수 있습니다.

const numbers = [1, 2, 3, 4, 5];
const target = 3;

// 조건을 만족하는 첫 번째 요소의 인덱스를 찾습니다.
const index = numbers.findIndex(element => element === target);

// 결과에 따라 메시지를 출력합니다.
if (index !== -1) {
    console.log(`찾는 값(${target})이 배열에 존재합니다. 인덱스: ${index}`);
} else {
    console.log(`찾는 값(${target})이 배열에 존재하지 않습니다.`);
}

// 출력: 찾는 값(3)이 배열에 존재합니다. 인덱스: 2
// 사용자 로그인 기록 배열
const loginHistory = [
  { user: 'Alice', date: '2025-01-01' },
  { user: 'Bob', date: '2025-01-02' },
  { user: 'Alice', date: '2025-01-05' },
  { user: 'Charlie', date: '2025-01-06' },
  { user: 'Alice', date: '2025-01-10' },
  { user: 'Bob', date: '2025-01-12' },
];

// 특정 사용자
const targetUser = 'Alice';

// 첫 로그인(findIndex)
const firstLoginIndex = loginHistory.findIndex(record => record.user === targetUser);

if (firstLoginIndex !== -1) {
  const firstLogin = loginHistory[firstLoginIndex];
  console.log(`첫 로그인:
    - 사용자: ${firstLogin.user}
    - 날짜: ${firstLogin.date}`);
} else {
  console.log(`${targetUser}의 첫 로그인 기록이 없습니다.`);
}

/* 출력:
첫 로그인:
    - 사용자: Alice
    - 날짜: 2025-01-01
*/