如何修改JavaScript代码移除map结果中的空数组片段?
解决过滤后仍存在空products数组的accounts项问题
你当前的代码只完成了过滤每个account下不符合白名单的products,但没有把那些过滤后products为空的account本身去掉。要达成期望结果,需要在处理完每个account的products后,再对accounts数组做一次过滤,只保留products不为空的account。
修改后的代码如下:
const WHITE_LIST = ['123', '321']; const mapped = items.map((item) => ({ ...item, accounts: item.accounts .map((acc) => ({ ...acc, products: acc.products.filter((prod) => WHITE_LIST.includes(prod.code)) })) // 新增过滤逻辑:移除products为空数组的account .filter(acc => acc.products.length > 0) })); console.log(mapped)
修改说明
- 先通过
map遍历每个account,筛选出其中符合白名单的products - 紧接着调用
filter方法,只保留处理后products数组长度大于0的account项
运行修改后的代码,输出结果将与期望一致:
[ { products: [ [Object] ] }, { products: [ [Object] ] } ]
内容的提问来源于stack exchange,提问作者physicsboy
相关产品推荐
相关产品推荐

