JavaScript中逗号分隔的数字字符串转换为整数数组

10

我正在将逗号分隔的数字字符串转换为整数数组,例如:

 var string = "1,2,3,4"; 
 var array = string.replace(/, +/g, ",").split(",").map(Number); 

它返回array = [1,2,3,4];

但是当,

 var string = ""; 
 var array = string.replace(/, +/g, ",").split(",").map(Number); 

它返回 array = [0];

我本来期望它返回array = []; 有人可以解释一下为什么会这样吗。


你忘记在字符串后面加上替换参数了。 - jcubic
1
.split() 总是返回至少一个元素。 - Ja͢ck
1
编辑,所以我想我必须添加一个检查,看字符串是否为空,然后才能拆分它。 - Hmahwish
如何在JavaScript中将逗号分隔的字符串转换为数字数组 - Bergi
3个回答

14

我建议这样做:

var array;
if (string.length === 0) {
    array = new Array();
} else {
    array = string.replace(/, +/g, ",").split(",").map(Number);
}

谢谢 RGraham,正是我想要的。(我的第一个回答) - Ghassen Rjab
3
根据这个答案,我最终执行了以下操作: array = (string.length === 0) ? new Array() : string.replace(/, +/g, ",").split(",").map(Number); (说明:该代码意思为:如果字符串长度为零,则创建一个空数组;否则,去掉逗号后面的多余空格,再将字符串以逗号为分隔符转化为数字类型的数组。) - Hmahwish
更加优雅 - Ghassen Rjab
1
看起来你缺少了 'replace':array = string.replace(/, +/g, ",").split(",").map(Number); - Bwyss

4
string.replace(/, +/g, ",").split(",")返回一个数组,其中只有一个元素 - 一个空字符串。在javascript中,将空字符串转换为数字时得到的是0。请自行查看。
Number(""); // returns (int)0

你忘记替换与 OP 相同的字符串。 - jcubic
是的,我现在明白了。谢谢。 - Hmahwish

2

要去除逗号后的空格,您可以在split函数内部使用正则表达式。

array = string.split(/\s*,\s*/).map(Number);

我希望这能有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接