JavaScript中如何正确判断数组最后一个元素是数字还是字符串?
JavaScript判断字符串拆分后最后一个元素是否为整数的正确方案
核心问题说明
你之前的实现踩了两个典型的JS类型判断坑:
parseInt转换非数字内容会返回NaN,而typeof NaN的结果是number,导致误判- 数字格式的字符串(如
"2021")本身类型是string,直接用typeof判断永远不会得到number结果
推荐实现方案
方案1:正则匹配(最直观,适合严格整数判断)
直接匹配最后一个元素是否完全由数字组成,避免半数字半字符串的异常内容误判:
function isLastElementInteger(str) { const lastItem = str.split(" ").pop(); // 正则匹配:只能包含数字,不能有其他字符,且长度至少为1 // 如果需要支持负整数,可将正则调整为 /^-?\d+$/ return /^\d+$/.test(lastItem); }
方案2:类型转换+安全校验(适合需要拿到转换后数值的场景)
结合Number.isNaN和Number.isInteger做双重校验,避免NaN和浮点数的误判:
function isLastElementInteger(str) { const lastItem = str.split(" ").pop(); const num = Number(lastItem); // 首先判断不是NaN,再判断是整数 return !Number.isNaN(num) && Number.isInteger(num); }
测试用例验证
所有常见场景的返回结果均符合预期:
- 输入
"Year 2021",返回true - 输入
"Year mukesh",返回false - 输入
"Hello darkness",返回false - 输入
"Hello 221",返回true - 额外边界场景:输入
"Year 123abc",返回false(避免半数字内容误判)
内容的提问来源于stack exchange,提问作者syed_naqvi
相关产品推荐
相关产品推荐

