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

如何在嵌套对象的数组中按名称查找指定元素?

在嵌套对象数组中查找指定元素

针对你给出的嵌套结构,有两种简洁的方法可以找到名称为"D"的crew元素:

方法一:展开数组后查找

利用flatMap将所有crew数组展开成一维数组,再用find匹配目标元素:

const data = [
  {
    _id: 1,
    crew: [
      { name: "A", price: "5" },
      { name: "B", price: "10" }
    ]
  },
  {
    _id: 2,
    crew: [
      { name: "C", price: "15" },
      { name: "D", price: "20" }
    ]
  }
];

// 查找名称为"D"的crew成员
const targetMember = data.flatMap(item => item.crew).find(member => member.name === "D");
console.log(targetMember);
// 输出:{ name: "D", price: "20" }

方法二:嵌套查找

先定位包含目标成员的父对象,再在其crew数组中查找:

// 先找到包含目标成员的父项
const parentItem = data.find(item => item.crew.some(member => member.name === "D"));
// 再从父项的crew数组中取出目标成员
const targetMember = parentItem?.crew.find(member => member.name === "D");

这种方法适合需要保留父对象关联信息的场景,?.可选链操作符可以避免找不到父对象时出现报错。

注意事项

  • 如果不存在匹配的元素,两种方法都会返回undefined,可以根据需求添加默认值处理。
  • 如果有多个同名成员,find只会返回第一个匹配的元素,若要获取所有匹配项,可将find替换为filter。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:12:20