You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据对象数组中types属性的元素值筛选目标对象?

解决方法:根据数组属性中的元素筛选对象

嘿,你遇到的问题很典型——因为你搞错了types属性的类型判断方式!

你看,address_components里每个对象的types是数组类型,而不是字符串。你之前用obj.types === "country"是在拿一个数组和字符串做全等比较,这肯定不会匹配成功,所以filter返回了空数组(不是undefined哦,你可能看错控制台输出啦😉)。

而你用short_name === "US"能成功,是因为short_name本身就是字符串类型,全等比较自然能匹配。

正确的筛选代码

你需要用数组的includes()方法来检查types数组里是否包含"country"这个元素:

const address_components = [ 
  { long_name: "11237", short_name: "11237", types: ["postal_code"] }, 
  { long_name: "Kings County", short_name: "Kings County", types: ["political, administrative_area_level_2"] }, 
  { long_name: "New York", short_name: "NY", types: ["political", "administrative_area_level_1"] }, 
  { long_name: "United States", short_name: "US", types: ["political", "country"] } 
];

var result = address_components.filter(obj => {
  return obj.types.includes("country");
});

console.log(result); // 会输出包含"country"的那个对象数组

补充:兼容旧环境的写法

如果你的代码需要兼容不支持includes()的旧浏览器,可以用indexOf()代替:

var result = address_components.filter(obj => {
  return obj.types.indexOf("country") !== -1;
});

这样就能正确筛选出types属性里包含"country"的对象啦!

内容的提问来源于stack exchange,提问作者vanegeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:00:31