JavaScript 提取嵌套对象数组中email字段值失败求解决方案
问题原因
- 原代码漏了一层数组索引:给定数据结构中
FILTERS是二维数组,FILTERS[0]获取到的是内层数组[{EQ: {email: "gm@gmail.com"}}],而非直接包含EQ属性的对象,需要再取一次内层数组的第0位索引才能拿到目标对象。
正确实现
固定结构写法
如果确定数据结构不会变动,直接补全索引即可:
const out = req.params.query.FILTERS[0][0].EQ.email; // 输出结果: "gm@gmail.com"
容错写法(推荐)
使用可选链避免某层级不存在时抛出类型错误:
const out = req?.params?.query?.FILTERS?.[0]?.[0]?.EQ?.email;
动态提取写法
如果FILTERS中可能存在多个过滤条件,需要批量提取所有匹配的email值,可以用扁平化+过滤的方式:
// 提取所有EQ条件下的email值 const emailList = req.params.query.FILTERS .flat() // 扁平化二维数组 .filter(item => item?.EQ?.email) // 过滤出包含EQ.email的项 .map(item => item.EQ.email); // 提取email值 // 取第一个匹配的email const out = emailList[0];
内容的提问来源于stack exchange,提问作者gowdham
相关产品推荐
相关产品推荐

