>웹 프론트엔드 >JS 튜토리얼 >점 표기법의 JavaScript 문자열을 객체 참조로 변환하려면 어떻게 해야 합니까?

점 표기법의 JavaScript 문자열을 객체 참조로 변환하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-19 18:19:09733검색

How can I convert a JavaScript string in dot notation into an object reference?

점 표기법의 JavaScript 문자열을 객체 참조로 변환

JavaScript에서는 점 표기법을 사용하여 객체 속성을 탐색하는 것이 일반적이고 편리한 방법입니다. . 그러나 점으로 구분된 계층 구조를 나타내는 문자열이 있고 이를 쉽게 액세스하기 위해 객체 참조로 변환해야 하는 상황이 있을 수 있습니다.

문제 설명:

점 표기법으로 된 객체와 문자열이 주어지면 해당 문자열을 객체 참조로 변환하여 해당 객체에 액세스하는 방법은 무엇입니까? 속성?

예:

다음 개체를 고려하세요.

var obj = { a: { b: '1', c: '2' } }

그리고 문자열:

"a.b"

어떻게 "a.b"를 변환하여 다음과 관련된 값을 검색할 수 있나요? obj.a.b?

해결책:

이를 달성하는 방법에는 여러 가지가 있습니다.

1. eval() 함수 사용(권장되지 않음):

eval("var val = obj." + string);

이 솔루션은 문자열을 코드로 직접 평가하고 결과를 val에 할당합니다. 그러나 보안 문제로 인해 eval() 사용은 일반적으로 권장되지 않습니다.

2. [] 연산자 사용(간접 방법):

var val = obj[string];

이 방법은 대괄호 구문을 사용하여 속성에 간접적으로 액세스합니다. 문자열이 유효한 JavaScript 식별자(예: 공백이나 특수 문자 없음)일 때 작동합니다.

3. Reduce() 메서드 사용:

var val = string.split('.').reduce(function(obj, i) { return obj[i]; }, obj);

이 솔루션은 문자열을 마침표(.) 문자로 분할하고 Reduce() 메서드를 사용하여 루트 개체부터 시작하여 개체 계층 구조를 순회합니다.

4. multiIndex() 함수 사용:

var val = multiIndex(obj, string.split('.'));

function multiIndex(obj, is) {
    return is.length ? multiIndex(obj[is[0]],is.slice(1)) : obj
}

이 솔루션은 원하는 속성을 찾을 때까지 개체 계층 구조를 재귀적으로 순회합니다. 다단계 점 표기법과 배열(필요한 경우)을 모두 처리합니다.

배열 처리(선택 사항):

문자열에 배열 인덱스가 포함된 경우 다음을 사용할 수 있습니다. 다음 접근 방식:

var val = string.match(/[^\]\[.]+/g).reduce(function(obj, i) { return obj[i]; }, obj);

추가 참고:

  • 특히 크거나 복잡한 객체 계층의 경우 재귀 또는 축소()를 사용할 때 성능에 미치는 영향을 고려하십시오.
  • 악성 코드를 방지하려면 입력 문자열을 정리해야 합니다.
  • JavaScript의 속성 키는 항상 문자열이므로 점 표기법을 사용하는 객체 참조는 본질적으로 문자열 기반.

위 내용은 점 표기법의 JavaScript 문자열을 객체 참조로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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