TypeScript中如何正确筛选数组所有descrizioneTipoCertificato为NAVE的元素
TypeScript中筛选数组元素的正确实现
你需要筛选出数组中所有descrizioneTipoCertificato字段值为"NAVE"的元素,当前使用的方法逻辑有误,导致无法获取全部符合条件的元素。
原方法的问题
你当前用findIndex找到第一个符合条件的元素索引,再用splice删除它——这本质是删除元素而非筛选元素,而且每次操作只会处理第一个匹配项,重复执行时还会因为数组长度变化导致后续元素索引偏移,最终漏掉部分符合条件的元素。
正确的filter实现
filter方法正是为这类场景设计的,它会遍历数组并返回所有满足条件的元素组成的新数组,不会修改原数组。
首先可以给数组元素定义TypeScript类型:
interface Certificato { codicePat: number; dataInizioAttivita: string; dataCessazione: string; descrizioneTipoCertificato: string; }
然后使用filter完成筛选:
// 假设原数组为dataPan.content,类型为Certificato[] const filteredCertificati = dataPan.content.filter(item => item.descrizioneTipoCertificato === 'NAVE' );
执行后filteredCertificati会包含所有descrizioneTipoCertificato为"NAVE"的3个元素。
若需修改原数组(保留目标元素)
如果你的需求是直接在原数组中保留符合条件的元素,也可以用filter的结果覆盖原数组:
dataPan.content = dataPan.content.filter(item => item.descrizioneTipoCertificato === 'NAVE' );
内容的提问来源于stack exchange,提问作者Au Bin
相关产品推荐
相关产品推荐

