javascript中整数数组的逗号分隔数字字符串

javascript中整数数组的逗号分隔数字字符串,javascript,arrays,split,Javascript,Arrays,Split,我正在将带有逗号分隔数字的字符串转换为整数数组,如 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] 我希望它返回arr

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

 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=[]
有人能说出发生这种情况的原因吗。

字符串.replace(/,+//g,“,”).split(“,”)
返回一个数组,其中有一个项是空字符串。在javascript中,转换为数字时的空字符串为0。看看你自己

Number(""); // returns (int)0

我建议:

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

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

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

我希望它能帮助你忘记字符串后面的替换。
.split()
总是返回至少一个元素。编辑,所以我想我必须添加一个检查字符串是否为空,然后只拆分它。你忘记了字符串后面的替换,和OP.Ya一样。我现在得到了。谢谢你,这正是我想要的。(我的第一个答案)根据这个答案,我最终做了-->数组=(string.length==0)?新数组():string.replace(/,+/g,“,”).split(“,”).map(数字);更优雅的是(y)它看起来缺少了“replace”:array=string.replace(/,+/g,“,”).split(“,”).map(Number);