如何在javascript中将逗号分隔的字符串转换为数字数组

use*_*371 28 javascript jquery

我在JavaScript中有一个一维的整数数组,我想从逗号分隔的字符串中添加数据,有一个简单的方法吗?

例如: var strVale = "130,235,342,124 ";

Adi*_*dil 27

您可以使用split()从逗号分隔的字符串中获取字符串数组.如果您对字符串数组的元素进行迭代并执行数学运算,那么该元素将被运行时转换视为数字,但仍然有字符串数组.要转换逗号分隔的字符串int数组,请参阅编辑.

arr = strVale.split(',');
Run Code Online (Sandbox Code Playgroud)

现场演示

var strVale = "130,235,342,124";
arr = strVale.split(',');
for(i=0; i < arr.length; i++)
    console.log(arr[i] + " * 2 = " + (arr[i])*2);
Run Code Online (Sandbox Code Playgroud)

产量

130 * 2 = 260
235 * 2 = 470
342 * 2 = 684
124 * 2 = 248
Run Code Online (Sandbox Code Playgroud)

编辑,逗号分隔的字符串为int数组在上面的示例中,字符串被转换为表达式中的数字,但要从字符串数组中获取int数组,您需要将其转换为数字.

var strVale = "130,235,342,124";
var strArr = strVale.split(',');
var intArr = [];
for(i=0; i < strArr.length; i++)
   intArr.push(parseInt(strArr[i]));
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的/只是实际解决方案的一步.它会将数字作为字符串保存到数组中,而不是整数! (2认同)

Ser*_*rge 21

? "123,87,65".split(",").map(Number)
> [123, 87, 65]
Run Code Online (Sandbox Code Playgroud)

编辑 >>

感谢@NickN注意!使用此方法,如果您通过例如过滤器适用.想要排除任何非数字值:

?", ,0,,6, 45,x78,94c".split(",").filter(x => x.trim().length && !isNaN(x)).map(Number)
> [0, 6, 45]
Run Code Online (Sandbox Code Playgroud)

  • 这是光滑的!到目前为止最佳答案. (2认同)
  • 非常好的答案。如果你想排除任何非数字值,你可以为 NaN 添加一个过滤器:`"123,87,hello,65".split(",").map(Number).filter(x =&gt; !isNaN (x))` 给出 `[123, 87, 65]`。 (2认同)

Ber*_*rgi 15

您可以使用String split方法将单个数字作为字符串数组.然后使用unary plus运算符,函数或将它们转换为数字,并将它们添加到数组中:NumberparseInt

var arr = [1,2,3],
    strVale = "130,235,342,124 ";
var strings = strVale.split(",");
for (var i=0; i<strVale.length; i++)
    arr.push( + strings[i] );
Run Code Online (Sandbox Code Playgroud)

或者,在一个步骤中,使用Arraymap转换它们并将它们应用于单个push:

arr.push.apply(arr, strVale.split(",").map(Number));
Run Code Online (Sandbox Code Playgroud)


Sai*_*nya 11

只是你需要使用几种方法,就是这样!

var strVale = "130,235,342,124";
var resultArray = strVale.split(',').map(function(strVale){return Number(strVale);});
Run Code Online (Sandbox Code Playgroud)

输出将是数字数组.