중첩 배열을 사용하여 복잡한 데이터 구조를 갖고 있으며 대소 문자를 구분하지 않는 검색을 사용하여 문자열 값이있는 요소를 찾아야합니다.lodash : 대소 문자를 구분하지 않는 방법 _.find()
중첩 된 쿼리를 수행하는 간단한 구문 때문에 lodash를 사용하기 시작했습니다. 대단위지만 검색은 대소 문자를 구분합니다.
"type"값이 'route'이고 "long_name"값이 'targetStreet'인 매개 변수와 동일한 'address_components'요소를 찾고 싶습니다. 여기
내가 지금까지 가지고있는 lodash 코드 :var result = _.find(geocodeResult,
{
'address_components': [
{
types: ['route'],
'long_name': targetStreet
}
]
});
질문 : 가 어떻게이 "긴 이름"속성 케이스의 일치가 문자를 구분 할 수 있습니까?
다음은 'geocodeResult'데이터 구조 (실제로는 Google 지오 코딩 결과 개체)의 예입니다.
이 데이터 구조는 동적입니다 ... Google은 가능한 가장 구체적인 결과를 반환하지만 거리와 일치하는 항목을 찾을 수없는 경우 거리 구성 요소를 반환하지 않습니다. 예 : "address_components"내의 "types"배열에는 비 결정적 값이 있습니다.
[
{
"address_components": [
{
"long_name": "V&a Lane",
"short_name": "V&a Ln",
"types": [
"route"
]
},
{
"long_name": "Coonawarra",
"short_name": "Coonawarra",
"types": [
"locality",
"political"
]
},
{
"long_name": "Wattle Range Council",
"short_name": "Wattle Range",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "South Australia",
"short_name": "SA",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "Australia",
"short_name": "AU",
"types": [
"country",
"political"
]
},
{
"long_name": "5263",
"short_name": "5263",
"types": [
"postal_code"
]
}
],
"formatted_address": "V&a Ln, Coonawarra SA 5263, Australia",
"geometry": {
"bounds": {
"south": -37.3238134,
"west": 140.8154452,
"north": -37.3228868,
"east": 140.97295129999998
},
"location": {
"lat": -37.3233904,
"lng": 140.89510410000003
},
"location_type": "GEOMETRIC_CENTER",
"viewport": {
"south": -37.3246990802915,
"west": 140.8154452,
"north": -37.3220011197085,
"east": 140.97295129999998
}
},
"partial_match": true,
"place_id": "EiVWJmEgTG4sIENvb25hd2FycmEgU0EgNTI2MywgQXVzdHJhbGlh",
"types": [
"route"
]
},
{
"address_components": [
{
"long_name": "V&a Lane",
"short_name": "V&a Ln",
"types": [
"route"
]
},
{
"long_name": "Coonawarra",
"short_name": "Coonawarra",
"types": [
"locality",
"political"
]
},
{
"long_name": "Wattle Range Council",
"short_name": "Wattle Range",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "South Australia",
"short_name": "SA",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "Australia",
"short_name": "AU",
"types": [
"country",
"political"
]
},
{
"long_name": "5263",
"short_name": "5263",
"types": [
"postal_code"
]
}
],
"formatted_address": "V&a Ln, Coonawarra SA 5263, Australia",
"geometry": {
"bounds": {
"south": -37.3238134,
"west": 140.8154452,
"north": -37.3228868,
"east": 140.97295129999998
},
"location": {
"lat": -37.3233904,
"lng": 140.89510410000003
},
"location_type": "GEOMETRIC_CENTER",
"viewport": {
"south": -37.3246990802915,
"west": 140.8154452,
"north": -37.3220011197085,
"east": 140.97295129999998
}
},
"partial_match": true,
"place_id": "EiVWJmEgTG4sIENvb25hd2FycmEgU0EgNTI2MywgQXVzdHJhbGlh",
"types": [
"route"
]
}
]
주어진 데이터 구조에서는 작동하지 않습니다. 함수는 컬렉션의 모든 객체에 대해 한 번 실행됩니다. 나의 예에서는 두 가지가있다. 이러한 객체에는 차례로 6 개의 속성이 있습니다. 내가 관심을 갖고있는 유일한 객체는 "address_components"입니다. 그리고 그 안에 ... "경로"값을 가진 "types"배열이 있는지 확인해야합니다 (거기에 없을 수도 있습니다) ... 그렇다면 "long_name"속성을 확인해야합니다. .. 네가 중첩 권리를 얻어야하고 우리가 그곳에있는 특성에 의지 할 수는 없다. – JTech
충분합니다. 대문자 소문자를 구별하는 방법 _find()'에 대한 질문에 대답하고있었습니다. – fubar