스택큐힙리스트

최상의 방법으로 JavaScript 배열에 아이템이 포함되어 있는지를 찾는 방법은? [중복] 본문

카테고리 없음

최상의 방법으로 JavaScript 배열에 아이템이 포함되어 있는지를 찾는 방법은? [중복]

스택큐힙리스트 2024. 1. 2. 16:12
반응형




객체가 배열에 있는지 확인하는 가장 좋은 방법은 무엇인가요?


내가 아는 최고의 방법입니다:



function include(arr, obj) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == obj) return true;
}
}
console.log(include([1, 2, 3, 4], 3)); // 참
console.log(include([1, 2, 3, 4], 6)); // 정의되지 않음


답변 1

ECMAScript 2016을 기준으로 includes()를 사용할 수 있습니다.


arr.includes(obj);

IE나 다른 오래된 브라우저를 지원하려면:


function include(arr,obj) {
return (arr.indexOf(obj) != -1);
}

EDIT:
IE6, 7 또는 8에서는 동작하지 않습니다. 이에 대한 최선의 해결 방법은 사용 가능하지 않을 경우 직접 정의하는 것입니다.


  1. Mozilla의(ECMA-262) 버전:


     if (!Array.prototype.indexOf)
    {
    Array.prototype.indexOf = function(searchElement /*, fromIndex */)
    {
    use strict;
    if (this === void 0 || this === null)
    throw new TypeError();
    var t = Object(this);
    var len = t.length >>> 0;
    if (len === 0)
    return -1;
    var n = 0;
    if (arguments.length > 0)
    {
    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));
    }
    if (n >= len)
    return -1;
    var k = n >= 0
    ? n
    : Math.max(len - Math.abs(n), 0);
    for (; k < len; k++)
    {
    if (k in t && t[k] === searchElement)
    return k;
    }
    return -1;
    };
    }


  2. Daniel James의 버전:


     if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (obj, fromIndex) {
    if (fromIndex == null) {
    fromIndex = 0;
    } else if (fromIndex < 0) {
    fromIndex = Math.max(0, this.length + fromIndex);
    }
    for (var i = fromIndex, j = this.length; i < j; i++) {
    if (this[i] === obj)
    return i;
    }
    return -1;
    };
    }


  3. roosteronacid의 버전:


     Array.prototype.hasObject = (
    !Array.indexOf ? function (o)
    {
    var l = this.length + 1;
    while (l -= 1)
    {
    if (this[l - 1] === o)
    {
    return true;
    }
    }
    return false;
    } : function (o)
    {
    return (this.indexOf(o) !== -1);
    }
    );


답변 2

최상의 방법으로 JavaScript 배열에 특정 항목이 있는지 찾는 방법 [중복됨]

JavaScript에서 배열에 특정 항목이 포함되어 있는지 확인하는 것은 웹 개발에서 매우 중요합니다. 배열은 여러 항목을 하나의 변수로 관리하기 위해 사용되는 데이터 구조입니다. 어떤 항목이 배열에 있는지 여부를 확인하는 것은 프로그램의 효율성과 사용자 경험에 영향을 미칠 수 있는 핵심적인 기능입니다.
JavaScript에서 배열에서 항목을 찾는 가장 일반적인 방법은 'includes()' 메서드를 사용하는 것입니다. 이 메서드는 주어진 값을 배열에 포함하고 있는지 여부를 확인합니다. 이를테면, 'array.includes(item)'와 같이 사용합니다. 'item'은 배열에 있는지 확인하고자 하는 항목입니다. 'includes()' 메서드는 불리언 값을 반환하며, 항목을 찾으면 'true'를 반환하고, 찾지 못하면 'false'를 반환합니다.
또 다른 방법으로는 'indexOf()' 메서드를 사용하는 방법이 있습니다. 이 메서드는 주어진 값을 배열에서 찾아 해당 인덱스를 반환합니다. 특정 항목이 배열에 없는 경우에는 '-1'을 반환합니다. 이를테면, 'array.indexOf(item)'와 같이 사용합니다. 'indexOf()' 메서드를 사용하는 경우에는 반환값을 확인하여 항목의 존재 여부를 파악해야 합니다.
이 외에도, 'find()' 메서드를 사용하여 배열에서 특정 조건을 만족하는 첫 번째 항목을 찾을 수도 있습니다. 이 메서드는 인자로 콜백 함수를 받으며, 콜백 함수는 배열의 각 항목에 대해 실행됩니다. 이를테면, 'array.find(callback)'와 같이 사용합니다. 콜백 함수는 조건을 만족하는 항목을 찾으면 해당 항목을 반환하며, 그렇지 않으면 'undefined'를 반환합니다.
이렇게 JavaScript 배열에서 항목을 찾는 방법을 사용하는 것은 프로그래머들 사이에서 흔히 알려진 방법입니다. 배열의 크기가 커질수록 'includes()', 'indexOf()', 혹은 'find()' 메서드 중 어떤 것을 선택할지는 성능과 코드 가독성을 고려하여 결정해야 합니다.

반응형
Comments