2009-11-20 55 views
4

我有一个字符串,我需要分裂成一个数组,然后在数组的每个元素上执行数学函数。解析数组的每个元素为一个整数

目前我正在做这样的事情。 (其实,我做这样的事,但是这是一个很简单的例子来说明我的问题!

var stringBits = theString.split('/'); 

var result = parseInt(stringBits[0]) + parseInt(stringBits[3])/parseInt(stringBits[1]); 

我想知道的是,如果有一种方法,我可以在阵列中的每个元素转换成某种类型,将不必每次都明确地分析它阻止我

回答

3

你可以通过它循环:

for(var i = 0; i < stringBits.length; i++) { 

    stringBits[i] = parseInt(stringBits[i]); 
} 
+0

我想避免这样做,如果可能的话,它似乎是一个不必要的循环,当它真正做到的只是让我的代码更清洁一点。 – Toby

+0

在JS中,循环是对数组的每个条目执行某些操作的唯一方法。 –

+1

如果你只想让你的代码更干净一点,你可以提供一个方法(例如extractIntsFromString),它将你的字符串转换为一个整数数组。然后使用整数数组的元素进行计算。一旦完成了类型转换,您可以专注于更简洁的代码,现在只需执行数学函数。 – 2009-11-20 11:34:02

-2

如果添加在你的字符串前面的加号(+)号,他们应该被转换为数字

例如,会打印出3:

var x = "1"; 
var y = "2"; 
alert((+x) + (+y)); 

但我不知道这是移植到所有的浏览器。

您的代码将变为:

var stringBits = theString.split('/'); 
var result = (+stringBits[0]) + (+stringBits[3])/(+stringBits[1]); 

但是,这只是一个黑客,因此要谨慎使用。

我认为parseInt更好地表明你正在尝试做什么,但是你应该把这个责任委托给另一个返回你需要处理的最终数据的方法。转换然后处理,不要在处理时转换。您的代码将更易于阅读。

+0

什么?!?!?天啊! –

5

更简单的方法是映射到数字对象

result= stringBits.map(Number); 
+1

这应该被标记为答案。并不是说其他​​答案是不正确的,但简单的是天才。 –

+0

它也是最新的(ES6) – GrayedFox

相关问题