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

如何过滤嵌套对象数组中mIP为'1234'的JSON数据?

解决方案

要实现你需要的过滤效果,可以结合filter和map方法分两步处理数据:先筛选出包含目标mIP的pDet项,再对每个保留项的pMem数组做精准过滤,同时保留原对象的其他字段。

代码实现

const json = {
  address: "fdqn",
  pDet: [
    {
      pNam: "pnam1",
      pMem: [
        { mIP: "1234", gp: "gp1" },
        { mIP: "567", gp: "gp2" },
        { mIP: "890", gp: "gp3" }
      ]
    },
    {
      pNam: "pnam1",
      pMem: [
        { mIP: "4567", gp: "gp5" },
        { mIP: "5674", gp: "gp7" }
      ]
    }
  ]
};

const targetMIP = "1234";

const filteredJson = {
  ...json, // 保留原对象的所有顶级字段(比如address)
  pDet: json.pDet
    // 第一步:过滤出pMem中存在目标mIP的pDet项
    .filter(pDetItem => pDetItem.pMem.some(mem => mem.mIP === targetMIP))
    // 第二步:对每个保留的pDet项,过滤pMem只留符合条件的对象
    .map(pDetItem => ({
      ...pDetItem,
      pMem: pDetItem.pMem.filter(mem => mem.mIP === targetMIP)
    }))
};

console.log(filteredJson);

代码说明

  1. 保留顶级字段:用展开运算符...json直接复制原对象的所有顶级属性(比如address),不用手动逐个复制,扩展性更强。
  2. 筛选pDet数组:通过filter结合some方法,只保留那些pMem数组中存在mIP="1234"的pDet元素。
  3. 过滤pMem数组:对每个筛选后的pDet元素,用map创建新对象,同时对其pMem数组做二次过滤,只留下符合条件的成员对象。

运行这段代码后,得到的filteredJson结构完全符合你的期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:50:24