Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 배열에서 특정 값 검색 후 다음 요소 반환하기

이번 글에서는 JavaScript로 배열과 검색 문자열을 다루는 함수를 작성해 보겠습니다. 이 함수는 첫 번째 인자로 리터럴 값들의 배열을, 두 번째 인자로 검색할 문자열을 받습니다.

함수의 동작 방식은 다음과 같습니다. 전달받은 문자열이 배열 안에 존재하는지 먼저 확인하고, 만약 해당 문자열이 배열에 있다면 그 바로 다음 위치에 있는 요소를 반환합니다. 반대로 문자열이 배열에 존재하지 않거나, 해당 문자열이 배열의 마지막 요소라서 다음 값이 없다면 false를 반환하도록 구현합니다.

구현 예제

const arr = ["", "comp", "myval", "view", "1"]
const getNext = (value, arr) => {
    const a = [undefined].concat(arr)
    const p = a.indexOf(value) + 1;
    return a[p] || false;
}
console.log(getNext('comp', arr));
console.log(getNext('foo', arr));

코드 설명

핵심 아이디어는 배열 앞에 undefined를 하나 추가하는 것입니다. 이렇게 하면 원본 배열의 인덱스가 하나씩 뒤로 밀리게 되어, indexOf로 찾은 위치에 1을 더했을 때 정확히 '다음 요소'의 인덱스를 가리키게 됩니다.

  • [undefined].concat(arr): 원본 배열 앞에 더미 값을 붙여 새로운 배열을 생성합니다.
  • a.indexOf(value) + 1: 검색 문자열의 위치에서 한 칸 뒤 인덱스를 계산합니다.
  • a[p] || false: 다음 요소가 존재하면 그 값을, 존재하지 않으면(인덱스가 범위를 벗어나면) false를 반환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

myval
false

'comp'는 배열에 실제로 존재하므로 그 다음 요소인 'myval'이 반환되고, 'foo'는 배열에 없으므로 false가 출력됩니다.