我在获得县/区的React App中具有以下js函数
这可以获取administrative_area_level_2
。
export const getDistrict = place => {
var filtered_array = place.address_components.filter(function(address_component)
{
return address_component.types
return district
}
如何修改上述功能以首先有效地检查administrative_2
,然后如果不存在,则获取administrative_1
答案 0 :(得分:2)
.filter
在这里没有多大意义,因为您不需要创建中间数组,只需要查找一个值即可。您可以使用.find
返回administrative_area_level_2
(如果找到),否则返回administrative_area_level_1
,否则返回unknown
:
export const getDistrict = ({ address_components }) => {
const lvl2 = address_components.find(({ types }) => types.includes('administrative_area_level_2'));
if (lvl2) return lvl2.long_name;
const lvl1 = address_components.find(({ types }) => types.includes('administrative_area_level_1'));
return lvl1 ? lvl1.long_name : 'Unknown';
};
或者,为了使代码更干燥,请将.find
和long_name
访问抽象到一个单独的函数中:
const makeFindType = arr => levelNum => {
const found = arr.find(({ types }) => types.includes('administrative_area_level_' + levelNum));
if (found) return found.long_name;
};
export const getDistrict = ({ address_components }) => {
const findType = makeFindType(address_components);
return findType('2') || findType('1') || 'Unknown';
};
答案 1 :(得分:-1)
您可以在该方法中添加逻辑以首先在Administrative_area_level_1中进行检查,如果找到则返回并停止执行,如果没有继续,则在Administrative_area_level_2中进行搜索