>웹 프론트엔드 >JS 튜토리얼 >재귀를 사용하여 키로 중첩 배열에서 개체를 찾는 방법은 무엇입니까?

재귀를 사용하여 키로 중첩 배열에서 개체를 찾는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-19 17:55:021059검색

How to Find Objects in Nested Arrays by Key Using Recursion?

키로 중첩 배열에서 개체 찾기

복잡한 중첩 데이터 구조로 작업할 때 키를 기반으로 특정 개체를 찾아야 하는 경우가 많습니다. 열쇠. 이는 특히 데이터가 깊게 중첩된 경우 어려울 수 있습니다.

구조를 위한 재귀

재귀를 사용하면 중첩된 데이터를 더 작은 크기로 나누어 탐색할 수 있습니다. 관리 가능한 덩어리. 다음은 주어진 키를 사용하여 개체를 찾을 수 있는 재귀 함수입니다.

function getObject(theObject) {
    var result = null;
    if (theObject instanceof Array) {
        for (var i = 0; i < theObject.length; i++) {
            result = getObject(theObject[i]);
            if (result) {
                break;
            }
        }
    } else {
        for (var prop in theObject) {
            if (prop == 'id') {
                if (theObject[prop] == 1) {
                    return theObject;
                }
            }
            if (theObject[prop] instanceof Object || theObject[prop] instanceof Array) {
                result = getObject(theObject[prop]);
                if (result) {
                    break;
                }
            }
        }
    }
    return result;
}

사용 예

이 함수를 사용하여 id가 1인 개체를 찾아보겠습니다. 중첩 배열의 예:

var myArray = [{
    'title': "some title",
    'channel_id': '123we',
    'options': [{
        'channel_id': 'abc',
        'image': 'http://asdasd.com/all-inclusive-block-img.jpg',
        'title': 'All-Inclusive',
        'options': [{
            'channel_id': 'dsa2',
            'title': 'Some Recommends',
            'options': [{
                'image': 'http://www.asdasd.com',
                'title': 'Sandals',
                'id': '1',
                'content': {
                    // ...
                }
            }]
        }]
    }]
}];

var result = getObject(myArray);
console.log(result); // prints the found object

위 내용은 재귀를 사용하여 키로 중첩 배열에서 개체를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.