Javascript 将字符串值转换为数字数组

Javascript 将字符串值转换为数字数组,javascript,Javascript,将字符串值转换为int数组的最佳方式是什么,例如: var s = '1,1,2'; 致: 谢谢 对于那些没有实现map的浏览器,可以从这里获得如下实现: Array.prototype.map在ECMAScript 5中,所以不要害怕扩充Array.prototype 对于那些没有实现map的浏览器,可以从这里获得如下实现: Array.prototype.map在ECMAScript 5中,因此不要害怕扩充Array.prototype。如果数据是安全的,可以使用.eval 如果您不确定安

将字符串值转换为int数组的最佳方式是什么,例如:

var s = '1,1,2';
致:

谢谢

对于那些没有实现map的浏览器,可以从这里获得如下实现:

Array.prototype.map在ECMAScript 5中,所以不要害怕扩充Array.prototype

对于那些没有实现map的浏览器,可以从这里获得如下实现:

Array.prototype.map在ECMAScript 5中,因此不要害怕扩充Array.prototype。

如果数据是安全的,可以使用.eval

如果您不确定安全性,可以使用JSON.parse

…尽管您需要在本机不支持语法分析器的浏览器中包含语法分析器。

如果数据是安全的,您可以使用.eval

如果您不确定安全性,可以使用JSON.parse


…尽管您需要在本机不支持语法分析器的浏览器中包含语法分析器。

JavaScript是一种动态类型语言,这意味着这些数组项作为数字可能不太重要。如果是这样的话,您可能需要考虑使用SPL:< /P> 如果它们是数字这一点很重要,那么最好的办法是在之后对它们进行迭代:

for (var i = 0, max = a.length; i < max; i++)
    a[i] = +a[i]; 

还有ECMAScript第5版方法映射,但尚未在所有浏览器中实现。

JavaScript是一种动态类型语言,这意味着这些数组项作为数字可能并不重要。如果是这样的话,您可能需要考虑使用SPL:< /P> 如果它们是数字这一点很重要,那么最好的办法是在之后对它们进行迭代:

for (var i = 0, max = a.length; i < max; i++)
    a[i] = +a[i]; 


还有ECMAScript第5版方法映射,但尚未在所有浏览器中实现。

您信任字符串数组中的值还是需要验证每个值是否为数字?我正在考虑使用split-then-parseInt来确保这些值应该是正确的,如果您信任这些值,@Andy E答案的第一部分中的解决方案是最简单、最快速的。您信任字符串数组中的值还是需要验证每个值都是数字?我正在考虑使用split-then-parseInt来确保这些值应该是正确的,如果您信任这些值,@Andy E答案的第一部分中的解决方案是最简单和最快的。+1表示映射思想-尽管兼容性实现与标准循环相比有点慢。循环和包装循环之间的差异可以忽略。+1表示映射思想-尽管兼容性实现与标准循环相比有点慢到标准循环。循环和包装循环之间的差异可以忽略。预先警告,如果任何值无效,将抛出语法错误-例如1,2,3a,4。如果您可以信任源代码,那么我非常喜欢JSON.parse方法。@Andy E:说得好。如果您期望的是有效数字,则此选项有效。虽然如果有无效的东西进入,可能需要一个语法错误。我想这取决于它是如何使用的重新警告,如果任何值无效,将抛出语法错误-例如,1,2,3a,4。如果您可以信任源代码,那么我非常喜欢JSON.parse方法。@Andy E:说得好。如果您期望的是有效数字,则此选项有效。虽然如果有无效的东西进入,可能需要一个语法错误。我想这取决于它是如何使用的oDo您需要先验证字符串是否为数字,或者您是否已经知道它们是有效的?谢谢,使用[i]=+a[i];在[i]=parseInta[i]?@xylar上:如果parseInt没有第二个参数,以0开头的数字可能会被解析为八进制+a[i]相当于Numbera[i],它总是解析为十进制,除非数字以0x开头表示十六进制。不过,我使用它主要是因为它比较短:-您需要先验证字符串是否为数字,还是您已经知道它们是有效的?谢谢,使用[I]=+a[I]有什么好处吗;在[i]=parseInta[i]?@xylar上:如果parseInt没有第二个参数,以0开头的数字可能会被解析为八进制+a[i]相当于Numbera[i],它总是解析为十进制,除非数字以0x开头表示十六进制。不过,我使用它主要是因为它较短:-
var a = eval( '[' + s + ']');
var a = JSON.parse( "[" + s + "]" );
var s = '1,1,2',
    a = s.split(",");
for (var i = 0, max = a.length; i < max; i++)
    a[i] = +a[i];