const colors = ["red", "green", "blue", "red"];

/*
 * 주의하세요!
 * 배열에서 인덱스는 0부터 시작합니다.
 * 첫 번째 요소의 인덱스는 0이고, 두 번째 요소의 인덱스는 1입니다.
*/

// 배열 colors에서 요소 "red"를 배열에서 찾을 수 있는 마지막 인덱스를 반환합니다
const red = colors.lastIndexOf("red");
console.log(red); // 출력: 3;

// 배열 colors에서 인수로 전달된 요소 "yellow"를 찾을 수 없으므로 -1을 반환합니다.
const yellow = colors.lastIndexOf("yellow");
console.log(yellow); // 출력: -1;
arr.lastIndexOf(searchElement[, fromIndex])
/*
 * 인수로 전달된 요소가 배열에서 중복으로 있다면,
 * 주어진 요소가 배열에서 찾을 수 있는 마지막 인덱스를 반환합니다.
*/
const colors = ["red", "green", "blue", "red"];

// 배열 colors에서 요소 "red"를 배열에서 찾을 수 있는 마지막 인덱스를 반환합니다.
const red = colors.lastIndexOf("red");

// 배열 colors에서 요소 "red"은 두 개가 있습니다.
// 인덱스 0과 3에 있습니다.
// 하지만, 배열에서 요소의 마지막 등장 위치의 인덱스인 3을 반환합니다.
console.log(red); // 출력: 3;


/*
 * arr.lastIndexOf(searchElement[, fromIndex])
 *
 * 옵션(선택적)으로 사용하는 fromIndex가 음수 값일 경우
 * 이 경우 배열의 끝에서부터 역으로 카운트한 인덱스를 검색 시작 위치로 삼습니다.
 * 검색 방향은 항상 오른쪽에서 왼쪽이며, 검색 중 요소를 찾으면 즉시 반환하고 탐색을 중단합니다.
*/
const fruits = ["apple", "bannana", "orange", "mango"];
const index = fruits.lastIndexOf("mango", -2);

console.log(index); // 출력: -1;
// fromIndex 값이 -2입니다.
// 배열의 끝에서부터 역으로 카운트되기 때문에
// 끝에서 두 번째 요소인 "orange"부터 검색합니다.
// 그러나 여전히 오른쪽에서 왼쪽 방향으로 검색합니다.
// 찾고자 하는 요소인 "mango"는 "orange"의 오른쪽 첫 번째에 존재함으로,
// 검색 범위(인덱스 0, 1, 2)에 포함되지 않습니다.
// 인수로 전달된 요소를 찾을 수 없다는 의미의 -1을 반환합니다.
const arr = [1, 2, NaN, 4, 5];
console.log(arr.lastIndexOf(NaN)); // 출력: -1
const colors = ["red", "green", "blue"];
const red = colors.lastIndexOf("Red");

// 대문자 "R"과 소문자 "r"을 구분합니다.
console.log(red); // 출력: -1;
/*
 * 시나리오:
 * 활동 기록이 사용자 ID 배열과 시간 배열로 나누어 저장되어 있습니다.
 * "user_B"가 마지막으로 활동한 시간을 찾아 표시합니다.
 */

// 사용자 ID가 기록된 배열 (기준 배열)
const userIDs = ["user_A", "user_B", "user_A", "user_C", "user_B"];

// 각 사용자 활동 시간 배열 (같은 인덱스끼리 매칭)
const timestamps = [
    "10:05:00",
    "10:15:20",
    "10:25:10",
    "10:35:05",
    "10:45:55" // user_B의 마지막 활동 시간
];

const targetID = "user_B";

// lastIndexOf()를 사용하여 마지막 활동 위치 찾기
const lastIndex = userIDs.lastIndexOf(targetID);

if (lastIndex !== -1) {
    const lastActiveTime = timestamps[lastIndex];

    console.log(`대상 ID: ${targetID}`); //  대상 ID: user_B
    console.log(`마지막 활동 인덱스: ${lastIndex}`); // 마지막 활동 인덱스: 4
    console.log(`가장 최근 활동 시간: ${lastActiveTime}`); // 가장 최근 활동 시간: 10:45:55
} else {
    console.log(`${targetID}의 활동 기록을 찾을 수 없습니다.`);
}