如何在javascript中将整个数组从字符串转换为整数/数字

时间:2016-09-17 23:12:13

标签: javascript arrays

我需要这样做,而不是1 + 1 = 11我的代码将返回1 + 1 = 2

<!DOCTYPE html>
<html>
<body>

<script>
var  arr = [];                              

for (var i = 0; i < 7; i++) {              
  arr.push(prompt('Enter GTIN Digit ' + (i+1))); 
}

alert('Full GTIN: ' +  (arr [0]*3)+(+ arr [2]*3)+(arr [4]*3)+(arr [6]*3) + (arr [1])+(arr [3])+ (arr [5])             );  

</script>

</body>
</html>

2 个答案:

答案 0 :(得分:0)

使用parseInt()

parseInt(1)+parseInt(1)

答案 1 :(得分:0)

您需要添加一个字符:+之前的prompt(单一加号):

arr.push(+prompt('Enter GTIN Digit ' + (i+1)));

这将进行转换。

其次,您需要避免将其转换回alert中的字符串。将整个计算放在括号之间,否则第一个字符串将使所有+充当字符串连接:

alert('Full GTIN: ' + (arr[0]*3+arr[2]*3+arr[4]*3+arr[6]*3+arr[1]+arr[3]+arr[5]));  

或者,使用reduce

alert('Full GTIN: ' + arr.reduce((s, d, i) => s+(i%2?d:d*3), 0));

转换数组

单一+解决方案对我来说似乎是最好的,但如果 - 就像你输入标题 - 你真的想先构建字符串数组然后转换值,然后使用这个语句:

arr = arr.map(Number);

说明

  • 通过prompt询问重复输入对用户不友好。用户不能中断该序列或返回。更好的方法是使用input类型的number元素。
  • 您需要验证输入。只要您有一个NaN而不是一个数字,或者输入由多个数字而不是一个数字组成,计算就无法正常工作,因此无需完成整个输入周期。