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

如何将查找PUBLICATIONS_OVERVIEW的segmentId的两段JS代码合并为单行?

问题:查找指定title对应的segmentId单行写法

我有如下结构的对象数组,需要从中找到title为"PUBLICATIONS_OVERVIEW"的segmentId:

{
  "sections": [
    {
      "title": "CAMPAIGNS",
      "segments": [
        { "title": "CAMPAIGN_DA", "segmentId": 145 },
        { "title": "CAMPAIGN_IM", "segmentId": 146 },
        { "title": "CAMPAIGN_ENG", "segmentId": 147 },
        { "title": "CAMPAIGN_DEMO", "segmentId": 148 },
        { "title": "CAMPAIGN_BUDGET", "segmentId": 149 }
      ]
    },
    {
      "title": "PUBLICATIONS",
      "segments": [
        { "title": "PUBLICATIONS_OVERVIEW", "segmentId": 150 },
        { "title": "PUBLICATIONS_POSTS", "segmentId": 151 }
      ]
    }
  ]
}

当前使用两段JavaScript代码可正常实现需求:

const publicationSegments = this.sections.find(section => section.title === 'PUBLICATIONS');
const segmentId = publicationSegments.segments.find(segment => segment.title === 'PUBLICATIONS_OVERVIEW').segmentId;

但尝试将这两段代码合并为单行时,输出始终为undefined,希望了解正确的单行代码写法。


解答

直接将两段代码链式调用即可得到正确的单行写法:

const segmentId = this.sections.find(section => section.title === 'PUBLICATIONS').segments.find(segment => segment.title === 'PUBLICATIONS_OVERVIEW').segmentId;

注意事项

如果find方法找不到匹配的section或segment,会返回undefined,此时直接链式调用会抛出TypeError。如果需要兼容找不到匹配项的场景,可以使用可选链操作符?.来避免报错,此时找不到时segmentId会返回undefined:

const segmentId = this.sections.find(section => section.title === 'PUBLICATIONS')?.segments.find(segment => segment.title === 'PUBLICATIONS_OVERVIEW')?.segmentId;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:01:06