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

如何根据对象数组中的type值获取对应short_name值?

根据type值获取对应short_name的解决方案

首先注意你提供的数组存在语法错误:后两个对象的short_name键值对末尾缺少逗号,修正后的数组如下:

const address = [
    {
        'short_name': '123',
        'type': 'street_number'
    },
    {
        'short_name': 'principal',
        'type': 'route'
    },
    {
        'short_name': 'Washington',
        'type': 'city'
    }
];

核心解决方案(推荐)

使用find方法直接定位匹配对象并提取short_name,这是最简洁高效的方式:

// 获取type为street_number的short_name,找不到时返回空字符串(可自定义默认值)
const part_of_address = address.find(item => item.type === 'street_number')?.short_name || '';
  • find遍历数组时,会返回第一个符合item.type === 'street_number'条件的对象
  • 可选链操作符?.避免找不到匹配对象时出现Cannot read property 'short_name' of undefined的报错
  • || ''用于在无匹配项时设置默认值,可根据需求改成null或其他值

为什么你之前的方法没成功?

如果用了filter,要注意它返回的是匹配元素组成的数组而非单个对象,必须取数组第一个元素再提取值:

// 用filter实现的写法
const part_of_address = address.filter(item => item.type === 'street_number')[0]?.short_name || '';

但filter会遍历整个数组,而find找到第一个匹配项就停止,性能更优。

扩展:获取所有匹配的short_name

如果数组中可能存在多个同type的元素,需要收集所有对应的short_name,可以结合filter和map:

const all_street_numbers = address.filter(item => item.type === 'street_number').map(item => item.short_name);
// 结果示例:['123'](如果有多个匹配项则会包含所有值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:15:32