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

How to convert a whole array from strings to integers/numbers in javascript

本文关键字:转换 字符串 整数 数字 数组 javascript      更新时间:2023-09-26

我需要让它不是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>

您只需要在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而不是一个数字,或者输入由多个数字而不是一个数字组成,计算就不能正常工作,因此没有必要完成整个输入周期。

使用parseInt()

parseInt(1)+parseInt(1)