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

如何结合filter与map方法筛选指定配件的对象并提取名称?

筛选并提取数组对象指定字段

先看给定的对象数组:

let input = [
    {
        "metadata": { "id": 1071, "name": "USA" },
        "accesories": [ { "name": "steel" } ]
    },
    {
        "metadata": { "id": 1068, "name": "China" },
        "accesories": [ { "name": "electronics" } ]
    },
]

使用input.map((el) => el?.metadata?.name)可以直接提取所有metadata.name,得到输出:

["USA", "China"]

现在需要先根据accesories中的name筛选对象,再提取对应metadata.name——比如筛选steel时输出["USA"],筛选electronics时输出["China"],可以通过先filter筛选,再map提取的方式实现:

实现代码

// 定义要筛选的配件名称
const targetAccessory = "steel";

// 先筛选符合条件的对象,再提取metadata.name
const result = input
  .filter(el => el?.accesories?.some(item => item?.name === targetAccessory))
  .map(el => el?.metadata?.name);

console.log(result); // 输出 ["USA"]

代码说明

  1. filter阶段:使用some方法遍历accesories数组,判断是否存在name等于目标值的元素,只保留符合条件的对象。
  2. map阶段:对筛选后的对象数组,提取每个对象的metadata.name字段,得到最终结果。

如果要筛选electronics,只需要修改targetAccessory的值为"electronics"即可,输出会是["China"]。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:46:02