如何拆分字符串中逗号分隔的数字并存入数组?代码求助
解决逗号分隔数字字符串转数组的问题
嘿,我来帮你搞定这个问题!先说说你代码里的几个小问题,再给你最简洁的正确实现方式。
你的原代码存在这些问题
- 语法错误:你写的
var a=18,19,20不是合法的字符串定义,这行代码会被解析成var a=18; 19; 20;,最终a的值是18,完全不是你想要的逗号分隔字符串——首先得把a定义成字符串:var a="18,19,20"; - 循环逻辑冗余且错误:
split(',')本身就能一次性把整个字符串按逗号分割成数组,根本不需要while循环。而且你在循环里没有更新a的值,会导致循环无限执行;同时直接push(x)会把整个split出来的数组塞到temp里,最后得到的是二维数组,不是你要的数字数组。
正确的实现方式
一行代码就能搞定,不管字符串是单个数字还是多个逗号分隔的数字,都能完美处理:
var a = "18,19,20"; // 务必确保是字符串类型 var temp = a.split(',').map(item => Number(item));
代码解释:
split(','):把字符串按逗号分割成字符串数组,比如输入"18,19,20"会得到["18","19","20"];如果是单个数字"5",会得到["5"]map(item => Number(item)):把数组里的每个字符串元素转换成数字,最终得到纯数字数组[18,19,20]或者[5]
如果你偏好手动循环(虽然没必要,但可以参考)
要是你不想用map方法,也可以用for循环手动处理:
var a = "18,19,20"; var temp = []; var numberStrs = a.split(','); for (let i = 0; i < numberStrs.length; i++) { temp.push(Number(numberStrs[i])); }
这样也能得到相同的结果,不过显然第一种方法更简洁高效。
内容的提问来源于stack exchange,提问作者moris62
相关产品推荐
相关产品推荐

