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

如何在TypeScript数组中过滤掉字符串形式的数字?

解决TypeScript过滤数组中字符串形式数字的问题

原代码的判断逻辑完全搞反了,再加上parseInt(k) == k的隐式类型转换,导致数字字符串被保留下来,和预期结果完全相反。

正确实现方式

要过滤掉纯数字形式的字符串,我们需要筛选出不是纯数字格式的元素,这里推荐用正则表达式精准匹配纯数字字符串:

const arr = ['1', '2', 'apple'];

// 过滤所有由纯数字组成的字符串
const result = arr.filter(k => !/^\d+$/.test(k));
console.log('result = ', result); // 输出: ["apple"]

逻辑说明

  • /^\d+$/ 是正则表达式:^ 匹配字符串开头,\d+ 匹配一个或多个数字,$ 匹配字符串结尾,整体用来识别完全由数字构成的字符串。
  • ! 取反后,filter会只保留不满足纯数字条件的元素,也就是我们需要的非数字字符串。

另一种简化实现(适用于无特殊格式场景)

如果数组里没有空字符串这类特殊元素,也可以用Number转换结合Number.isNaN判断:

const result = arr.filter(k => Number.isNaN(Number(k)));

这种方式会保留无法转换为有效数字的字符串,也能得到预期结果,但正则的方式更精准,能避免空字符串''被误判为数字(Number('')返回0,不会被过滤)的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:43:19