jQuery 将数字字符串转换为整数

4

如何将包含数字的字符串(例如

1 - 2 - 3 - 4 - 5 - 6

)转换为整数?

我尝试了以下方法,但只返回第一个整数。

var a = '1 - 2 - 3 - 4 - 5 - 6';
var b = parseInt( a.split('-') );

$('#b').append(b);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id='b'></div>


在你追加字符串的时候,将其转换为字符串是没有意义的,因为它已经被转换回字符串了。 - T.J. Crowder
@T.J.Crowder,这将会移除字符串中的前导零。 - Timothy Groote
1
是的,但在将它们附加到浏览器之前,我需要对整数进行一些操作。 - Sergio
1
@TimothyGroote:问题中没有浮点数。 :-) 它也会截断浮点数,但问题中也没有这些。 - T.J. Crowder
1
parseInt不期望将数组作为param1参数 - 请参阅https://www.w3schools.com/jsref/jsref_parseInt.asp - CompanyDroneFromSector7G
5个回答

4
这是因为 string.split 返回一个字符串数组。
如果你想处理 split 返回的每个单独值,可以遍历数组并在迭代时将其解析为数字。
然后,您可以根据需要处理已解析的数字。 (在此示例中,它将每个数字乘以二并附加输出)

var a = '1 - 2 - 3 - 4 - 5 - 6';
var splitarray = a.split('-')
    
for(var i=0; i < splitarray.length; i++)
{
  var valueAsInt = parseInt(splitarray[i]);
  //do whatever you want with valueAsInt, like for instance
  valueAsInt *= 2;

  //adding the br so we can see what the individual numbers are
  $('#resultDiv').append(valueAsInt + "<br />"); 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="resultDiv"></div>


在 for 循环中,numbers 变量是从哪里来的?你是不是想说 splitarray? - Sergio
我搞砸了,现在已经修好了 ;) - Timothy Groote
谢谢,Timothy Groote! - Sergio

2

parseInt 只能将单个字符串转换成数字,不能处理字符串数组。

你可以使用 jQuery 的 $.each 方法来遍历每个元素并返回一个 int 数组。

(像问题和下面片段中的 HTML 代码一样放入网页中其实没有太大意义,因为它们会被重新转化成字符串形式显示在网页上,但是一旦转为数组,这些值就可以进行操作)。

var a = '1 - 2 - 3 - 4 - 5 - 6';
var arr = $.each(a.split('-'), function() { return parseInt(this, 10); });

var a = '1 - 2 - 3 - 4 - 5 - 6';
var b = $.each(a.split('-'), function() { return parseInt(this, 10); });
// b is now an array of ints
$("#result").html(b.join(","))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='result'>
</div>


1

在你的情况下,这样做没有意义,因为无论如何在附加时它都会被转换回字符串。根据你提供的数字,转换根本不会有任何影响。

如果您有一些数字会受到影响,请参阅注释:

var a = '1 - 2 - 3 - 4 - 5 - 6';
// Let's not look this up every time
var b = $("#b");
// Split and loop through the parts
a.split('-').forEach(function(entry) {
  // Append each part after converting to int.
  // Note the 10 at the end: That's the number base.
  b.append(parseInt(entry, 10));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id='b'></div>


0

这是因为split()函数返回数组,而parseInt()不支持输入数组。

您需要逐个解析数组中的每个元素。

请尝试以下操作:

var a = '1 - 2 - 3 - 4 - 5 - 6';
// Split string into array
var b = a.split('-');

var c = [];

// convert from string to integer and push it into c array
b.forEach(function (item, index, arr) {
   c.push(parseInt(item.trim()));
});

$('#b').append(c);

0
你应该根据 - 分割你的字符串,然后遍历它以将每个元素附加到你的 HTML 元素上。

var a = '1 - 2 - 3 - 4 - 5 - 6';
var arr = a.split(' - ');
var ele=$('#b');
for(var i=0; i < arr.length; i++)
{
    ele.append(parseInt(arr[i]));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id='b'></div>


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