我需要这样做,而不是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>
答案 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
而不是一个数字,或者输入由多个数字而不是一个数字组成,计算就无法正常工作,因此无需完成整个输入周期。