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