javascript - 如何通过子值过滤数组javascript

标签 javascript arrays

我得到了这个对象

{
"results": [
    {
        "address_components": [
            {
                "long_name": "Abdon Cifuentes - Carlos Silva Vildosola",
                "short_name": "Abdon Cifuentes - Carlos Silva Vildosola",
                "types": [
                    "point_of_interest",
                    "establishment"
                ]
            },
            {
                "long_name": "Concepción",
                "short_name": "Concepción",
                "types": [
                    "locality",
                    "political"
                ]
            },
            {
                "long_name": "Concepción",
                "short_name": "Concepción",
                "types": [
                    "administrative_area_level_3",
                    "political"
                ]
            },
            {
                "long_name": "Concepcion",
                "short_name": "Concepcion",
                "types": [
                    "administrative_area_level_2",
                    "political"
                ]
            },
            {
                "long_name": "Región del Bío Bío",
                "short_name": "Región del Bío Bío",
                "types": [
                    "administrative_area_level_1",
                    "political"
                ]
            },
            {
                "long_name": "Chile",
                "short_name": "CL",
                "types": [
                    "country",
                    "political"
                ]
            }
        ],
        "formatted_address": "Abdon Cifuentes - Carlos Silva Vildosola, Concepción, Concepción, Región del Bío Bío, Chile",
        "geometry": {
            "location": {
                "lat": -36.8000307,
                "lng": -73.0487725
            },
            "location_type": "APPROXIMATE",
            "viewport": {
                "northeast": {
                    "lat": -36.7986817197085,
                    "lng": -73.0474235197085
                },
                "southwest": {
                    "lat": -36.8013796802915,
                    "lng": -73.05012148029151
                }
            }
        },
        "place_id": "ChIJxy0y5a61aZYRq9rC4fyIYfg",
        "types": [
            "bus_station",
            "transit_station",
            "point_of_interest",
            "establishment"
        ]
    },
    {
        "address_components": [
            {
                "long_name": "Concepción",
                "short_name": "Concepción",
                "types": [
                    "locality",
                    "political"
                ]
            },
            {
                "long_name": "Concepción",
                "short_name": "Concepción",
                "types": [
                    "administrative_area_level_3",
                    "political"
                ]
            },
            {
                "long_name": "Concepcion",
                "short_name": "Concepcion",
                "types": [
                    "administrative_area_level_2",
                    "political"
                ]
            },
            {
                "long_name": "Región del Bío Bío",
                "short_name": "Región del Bío Bío",
                "types": [
                    "administrative_area_level_1",
                    "political"
                ]
            },
            {
                "long_name": "Chile",
                "short_name": "CL",
                "types": [
                    "country",
                    "political"
                ]
            }
        ],
        "formatted_address": "Concepción, Concepción, Región del Bío Bío, Chile",
        "geometry": {
            "bounds": {
                "northeast": {
                    "lat": -36.76354250000001,
                    "lng": -72.98195799999999
                },
                "southwest": {
                    "lat": -36.8890559,
                    "lng": -73.0841332
                }
            },
            "location": {
                "lat": -36.8201352,
                "lng": -73.0443904
            },
            "location_type": "APPROXIMATE",
            "viewport": {
                "northeast": {
                    "lat": -36.76354250000001,
                    "lng": -72.98195799999999
                },
                "southwest": {
                    "lat": -36.8890559,
                    "lng": -73.0841332
                }
            }
        },
        "place_id": "ChIJO8a70s21aZYRmCYhUrc3y0Q",
        "types": [
            "locality",
            "political"
        ]
    }
],
"status": "OK"
}

我需要的是在每个 results[i].types 数组中搜索的函数,如果函数 find results[i].types[j] == "locality"返回 results[i]。因此,如果 results[i].types[j] == "locality"没有找到任何巧合,则不返回任何内容。

最佳答案

使用Array.prototype.filter()缩小具有地点类型的结果

var filtered_results = data.results.filter(function(item){
   return item.types.indexOf('locality') >-1;
});

然后从过滤后的数组中取出第一个

var addressParts
if(filtered_results.length){
   addressParts = filtered_components[0].address_components;
}

关于javascript - 如何通过子值过滤数组javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202312/

相关文章:

javascript - 如果主体宽度最大为 500px,我想添加一个按钮

javascript - 如何通过在 flutter 中知道其值来删除 key ?

php - 格式化 Json 数组 php

计算未初始化字符数组的长度

java - 为 Math.Random 创建武器数组以供选择

c++ - 结构初始化数组

javascript - 如何从一个cshtml文件中调用或使用cshtml文件的功能?

javascript - 在 Canvas 标签中移动和清除线条

php - 在 JQVMAPS 中添加带有国家名称的实时时间

c - C 新手,返回指向二维数组的指针