使用jQuery将字符串数组转换为整数数组

5

我尝试将一个字符串数组转换为jquery中的整数数组。

这是我的尝试:

var cdata = data.values.split(",");
$.each( cdata, function(i, l){
   l = parseInt(l);
});

2
我相信只要你稍微动一下脑筋,就能自己完成它。好好想想,认真思考。 - Zirak
为什么在这种情况下使用jQuery,而简单的JavaScript循环已经足够了呢?使用jQuery的目标是什么? - griegs
4
你真的应该避免调用parseInt()时不指定基数。 - aroth
我同意始终指定parseInt()基数,但我还建议除非你特别想处理非十进制数字或者你想忽略源字符串末尾的非数字字符,否则parseInt()是错误的选择。Pablo的答案只包含更好选项中的一个。 - nnnnnn
3个回答

19

我认为在这种情况下您不需要使用Jquery。 在JavaScript中可以纯粹地实现:

var str = "1,2,3";
var ArrayOfInts = str.split(',').map(Number); //输出:[1,2,3]


8
// Use jQuery
$('.usesJQuery');

// Do what you want to acomplish with a plain old Javascript loop
var cdata = data.values.split(",");
for(var i = 0; i < cdata.length; i++)
    cdata[i] = parseInt(cdata[i], 10);

“+foo” 是 “parseInt(foo, 10)” 的简写形式。 - Pablo Fernandez
2
不完全是这样,如果 foo = '10 dollars'; 那么 parseInt() 可以工作,但 + 不行。 - Paul
1
另外,在我看来,parseInt() 比一元的 + 更清晰易读。简洁并非一切。 - aroth
@Pablo - 不,它不是!! 它更接近于 Number(foo),因为如果 foo = '12px',那么 parseInt(foo,10) 给出 12,但 +foo 给出 NaN - RobG
2
“+foo”是“new Number”的简写。 - The Mask
显示剩余7条评论

6
var cdata = data.values.split(",");
$.map( cdata, function(i, l){
   return +l;
});

不使用jQuery(使用浏览器本地的map方法):

"1,2,3,4,5,6".split(',').map(function(e) {return +e});

1
Array.prototype.map 并不被广泛支持,应该先进行特性测试,如果不可用,则提供替代方案。 - RobG
没有必要再添加for循环的解决方案了,@PaulPRO已经很好地涵盖了。我只是为了完整性而留下这个(因为其他地方没有提到)。 - Pablo Fernandez

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