JavaScript不使用for循环如何过滤对象数组嵌套数组中的gmail元素
实现方案
核心逻辑是对每个数据条目下的邮箱数组调用filter方法筛选gmail后缀邮箱,全程使用数组内置方法,不需要for循环,符合要求。
完整实现代码
const gmailList = aadharData.map(info => { const fullname = `${info.firstName} ${info.lastName}`; // 过滤后缀为@gmail.com的邮箱,兼容emails为空/undefined的场景 const filteredEmails = (info.emails || []).filter(email => email.endsWith('@gmail.com')); return { fullname, email: filteredEmails }; }) // 可选:如果需要过滤掉没有任何gmail邮箱的条目,保留下面这行,不需要就删掉 .filter(item => item.email.length > 0);
代码说明
- 用
map方法遍历原aadharData数组,直接生成符合目标格式的新数组,比手动向空数组push更简洁规范 - 邮箱筛选使用字符串内置的
endsWith方法匹配@gmail.com后缀,匹配规则准确 (info.emails || [])的写法可以兼容原数据中emails字段为空、undefined的场景,避免调用filter时报错- 末尾可选的
filter方法用来删除完全没有gmail邮箱的条目,如果需要保留这类用户(email字段为空数组)可以直接删除这段逻辑
测试数据输出结果
[ { fullname: "Ritam Singhal", // 注意原数据中的efg@gamil.com是拼写错误(a和i顺序颠倒),不会被匹配 email: ["ghj@gmail.com"] }, { fullname: "Siddarth Singhal", email: ["fgdfg@gmail.com"] } ]
内容的提问来源于stack exchange,提问作者Jay Sardar
相关产品推荐
相关产品推荐

