2017-10-18 94 views
1

我有一个数组中的多个对象(我缩短了例子,所以它没有多大意义,但我认为这是更好理解问题):搜索整个对象数组,并返回整个对象,如果一个值匹配一个字符串或子串

address_components: [ 
    { 
     id: 1, 
     name: "41", 
     types: "street_number" 
    }, 
    { 
     id: 2, 
     name: "Tal", 
     types: "route" 
    }, 
    { 
     id: 3, 
     name: "München", 
     types: "city" 
    }, 
    { 
     id: 4, 
     name: "Deutschland", 
     types: "country, political" 
    }, 
] 

我想查看这些对象并搜索类型,如“国家”。如果一个类型的“国家”发现我希望整个对象回来,所以:

{ 
    id: 4, 
    name: "Deutschland" 
    types: "country, political" 
} 

我得到了以下的方法:

var searchFor = "city"; 
var addressComponent = response.address_components.filter(function(e) { 
    return searchFor.indexOf(e.types) != -1; 
}); 

如果我搜索“城”工作,但如果我搜索像“国家”这样的子字符串(?)。 这种方法是否正确,如果我在我的示例中搜索“国家/地区”,我可以以某种方式扩展它以返回正确的结果吗?

回答

2

假设国家是类型的子字符串,则只需做到这反过来

return e.types.indexOf(searchFor) != -1; 
1

你倒东西。 return e.types.indexOf(searchFor)!= -1;

var address_components = [ 
 
     { 
 
      id: 1, 
 
      name: "41", 
 
      types: "street_number" 
 
     }, 
 
     { 
 
      id: 2, 
 
      name: "Tal", 
 
      types: "route" 
 
     }, 
 
     { 
 
      id: 3, 
 
      name: "München", 
 
      types: "city" 
 
     }, 
 
     { 
 
      id: 4, 
 
      name: "Deutschland", 
 
      types: "country,political" 
 
     } 
 
    ] 
 
    
 
    var searchFor = "political"; 
 
    
 
    var response = address_components.filter(function(e) { 
 
     return e.types.indexOf(searchFor) != -1; 
 
    }); 
 
    
 
    console.log(response);

相关问题