현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

요약

lastIndexOf () 메서드는 지정된 요소가 배열에서 발견 될 수있는 마지막 인덱스를 반환하고, 존재하지 않으면 -1을 반환합니다. 배열은 fromIndex에서 시작하여 뒤로 검색됩니다.

var a = [2, 5, 9, 2];
a.lastIndexOf(2); // 3
a.lastIndexOf(7); // -1

문법(Syntax)

arr.lastIndexOf(searchElement)
arr.lastIndexOf(searchElement, fromIndex)

매개변수

searchElement
배열에서 찾을 요소입니다.
fromIndex Optional
거꾸로 검색을 시작하는 인덱스입니다. 배열의 길이에서 1을 뺀 값 (arr.length - 1)을 기본값으로합니다. 즉, 전체 배열이 검색됩니다. 인덱스가 배열의 길이보다 크거나 같으면 전체 배열이 검색됩니다. 부의 경우는, 배열의 마지막으로부터의 오프셋 (offset)로서 받아 들여집니다. 인덱스가 음수 일지라도 배열은 계속해서 앞뒤로 검색됩니다. 계산 된 인덱스가 0보다 작은 경우 -1이 반환됩니다. 즉, 배열이 검색되지 않습니다.

반환 값

배열의 요소의 마지막 인덱스입니다. 발견되지 않으면 -1.

설명

lastIndexOf는 엄격한 동등성을 사용하여 검색 요소를 Array의 요소와 비교합니다 (=== 또는 triple-equals 연산자에서 사용하는 것과 같은 메서드).

예시

lastIndexOf 사용하기

다음 예제에서는 lastIndexOf를 사용하여 배열의 값을 찾습니다.

var array = [2, 5, 9, 2];
array.lastIndexOf(2);     // 3
array.lastIndexOf(7);     // -1
array.lastIndexOf(2, 3);  // 3
array.lastIndexOf(2, 2);  // 0
array.lastIndexOf(2, -2); // 0
array.lastIndexOf(2, -1); // 3

요소의 모든 항목 찾기

다음 예제에서는 lastIndexOf를 사용하여 push를 사용하여 지정된 배열의 요소 색인을 모두 찾아서 다른 배열에 추가합니다.

var indices = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var element = 'a';
var idx = array.lastIndexOf(element);
while (idx != -1) {
  indices.push(idx);
  idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1);
}

console.log(indices);
// [4, 2, 0]

배열의 첫 번째 요소 인 경우 요소가 fromIndex 매개 변수와 관계없이 항상 발견되므로 idx == 0 사례를 여기에서 개별적으로 처리해야합니다. 이는 indexOf 메소드와 다릅니다.

폴리필(Polyfill)

lastIndexOf는 5 판에서 ECMA-262 표준에 추가되었습니다. 이 표준의 다른 구현에는 존재하지 않을 수도 있습니다. 스크립트의 시작 부분에 다음 코드를 삽입하여이를 지원함으로써 네이티브 메소드를 지원하지 않는 구현에서 lastIndexOf를 사용할 수 있습니다. 이 알고리즘은 Object, TypeError, Number, Math.mins는 원래 값을가집니다. Math.floor, Math.abs

// ECMA-262, 5 판, 15.4.4.15의 제작 단계
// 참조 : http://es5.github.io/#x15.4.4.15
if (!Array.prototype.lastIndexOf) {
  Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) {
    'use strict';

    if (this === void 0 || this === null) {
      throw new TypeError();
    }

    var n, k,
      t = Object(this),
      len = t.length >>> 0;
    if (len === 0) {
      return -1;
    }

    n = len - 1;
    if (arguments.length > 1) {
      n = Number(arguments[1]);
      if (n != n) {
        n = 0;
      }
      else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) {
        n = (n > 0 || -1) * Math.floor(Math.abs(n));
      }
    }

    for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) {
      if (k in t && t[k] === searchElement) {
        return k;
      }
    }
    return -1;
  };
}

다시 말하지만,이 구현은 Firefox 및 SpiderMonkey JavaScript 엔진의 lastIndexOf와의 절대적인 호환성을 목표로합니다. 여기에는 논란의 여지가있는 몇 가지 사례가 포함됩니다. 실제 응용 프로그램에서이 기능을 사용하려는 경우이 경우를 무시하면 덜 복잡한 코드로 계산할 수 있습니다.

명세

Specification Status Comment
ECMAScript 5.1 (ECMA-262)
The definition of 'Array.prototype.lastIndexOf' in that specification.
Standard Initial definition. Implemented in JavaScript 1.6.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.lastIndexOf' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'Array.prototype.lastIndexOf' in that specification.
Draft  

브라우저 호환성

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) 9 (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

호환성 특이사항

  • Firefox 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44) 버전부터 이 메서드는 더이상 -0 을 반환하지 않습니다. 예를 들어 [0].lastIndexOf(0, -0) 는 항상  +0 을 반환합니다. (bug 1242043).

같이 보기

문서 태그 및 공헌자

이 페이지의 공헌자: KisukPark, zziuni, imskojs
최종 변경: KisukPark,