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

如何从嵌套数组中提取对象的id属性值并生成新数组

解决嵌套数组提取id属性的问题

嗨,我来帮你搞定这个问题~首先得说,你之前用的map方法没达到预期,是因为myArray里的每一项都是子数组,而不是直接的对象,所以直接map(id => id)只是把原数组复制了一遍,根本没触碰到里面的对象。

针对你的需求,这里有两种简单又高效的实现方式:

方法一:使用flatMap(推荐)

flatMap可以同时完成「映射子数组」和「压平结果」的操作,完美适配这种嵌套数组的场景:

let myArray = [ [ {id: "1"}, {id: "2"} ], [], [], [ {id: "3"} ] ];
const tagIds = myArray.flatMap(subArray => subArray.map(item => item.id));
console.log(tagIds); // 输出: ["1", "2", "3"]

原理很简单:

  • 先遍历myArray里的每个子数组
  • 对每个子数组,用map提取其中对象的id属性
  • 最后自动把所有子结果合并成一个一维数组,空数组因为映射后还是空,会被直接忽略

方法二:先压平再映射

如果你觉得flatMap有点陌生,也可以用更直观的flat() + map()组合:

let myArray = [ [ {id: "1"}, {id: "2"} ], [], [], [ {id: "3"} ] ];
const tagIds = myArray.flat().map(item => item.id);
console.log(tagIds); // 输出: ["1", "2", "3"]

这里的flat()默认会把嵌套深度为1的数组压平成一维,空数组会被直接移除,剩下的就是所有含id的对象,再用map提取属性就搞定了。

如果你的数组有更深的嵌套(比如三层及以上),可以给flat()传参数Infinity,它会把所有层级的嵌套都压平。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:25:12