문자열 경로를 사용하여 JavaScript 객체 및 배열의 중첩 구조를 탐색합니다.
P粉897881626
2023-08-15 21:01:19
<p>다음과 같은 데이터 구조가 있습니다.</p>
<pre class="brush:php;toolbar:false;">var someObject = {
'1 부' : {
'이름': '1부',
'크기': '20',
'수량' : '50'
},
'2 부' : {
'이름': '2부',
'크기': '15',
'수량' : '60'
},
'파트3': [
{
'이름': '파트 3A',
'크기': '10',
'수량' : '20'
}, {
'이름': '파트 3B',
'크기': '5',
'수량' : '20'
}, {
'이름': '파트 3C',
'크기': '7.5',
'수량' : '20'
}
]
};</pre>
<p>다음 변수를 사용하여 데이터에 액세스하고 싶습니다. </p>
<pre class="brush:php;toolbar:false;">var part1name = "part1.name";
var part2Quantity = "part2.qty";
var part3name1 = "part3[0].name";</pre>
<p>part1name은 <code>someObject.part1.name</code> 값, 즉 "Part 1"으로 채워져야 합니다. 60으로 패딩된 part2Quantity의 경우에도 마찬가지입니다. </p>
<p>순수한 JavaScript나 JQuery를 사용하여 이를 달성할 수 있는 방법이 있나요? </p>
이제
을 참조하세요._.get(obj, property)
를 사용하여 lodash를 통해 지원됩니다. https://lodash.com/docs#get문서의 예:
으아악이미 가지고 있는 유사한 코드를 기반으로 이것을 만들었고 작동하는 것 같습니다.
으아악사용법:
으아악http://jsfiddle.net/alnitak/hEsys/에서 실제 예제를 확인하세요.
EDIT 어떤 사람들은 가장 왼쪽 인덱스가 객체의 적절하게 중첩된 항목과 일치하지 않는 문자열을 전달하면 이 코드에서 오류가 발생한다는 것을 알아차렸습니다. 이는 타당한 우려사항이지만 전화할 때
try / catch
块来处理,而不是使这个函数静默地返回undefined
를 사용하는 것이 더 낫다고 생각합니다.