为什么以下工作正常:
var howMany = prompt("How many numbers?");
var myArray = [];
for(var i = 0; i < howMany; i++){
myArray.push(prompt("Enter a number"));
}
alert(myArray);
上面的代码旨在询问用户将要放入数组的数量,并显示数组。
下面这段代码似乎也很好。 有一个提供的阵列。 然后代码检查数字是否实际为数字。 之后,它将所有数字加在一起。
var myArray = [1,2,3,4,5];
isDataUniform(myArray);
function isDataUniform(array) {
var first = array[0];
var length = array.length;
for (i=0; i<length; i++){
if(typeof array[i]!== typeof first){
return false;
}
}
return true;
}
if (isDataUniform(myArray) === true){
add(myArray);
} else {
console.log("cant do adding");
}
function add(array) {
var f = 0;
var length = array.length;
for (i=0; i<length; i++){
f+= array[i];
}
alert("The result of addition of this set: " + myArray + " is: " + f);
}
但是当我把它们结合起来时它不起作用。它没有添加数字。
var howMany = prompt("How many numbers?");
var myArray = [];
for (var i = 0; i < howMany; i++) {
myArray.push(prompt("Enter a number"));
}
isDataUniform(myArray);
function isDataUniform(array) {
var first = array[0];
var length = array.length;
for (i = 0; i < length; i++) {
if (typeof array[i] !== typeof first) {
return false;
}
}
return true;
}
if (isDataUniform(myArray) === true) {
add(myArray);
} else {
console.log("can't do adding");
}
function add(array) {
var f = 0;
var length = array.length;
for (i = 0; i < length; i++) {
f += array[i];
}
alert("Result of addition of this set: " + myArray + " is: " + f);
}
你能帮我纠正吗?
答案 0 :(得分:2)
prompt
的返回值是一个字符串,而不是一个数字。
var n = prompt("Enter a number");
alert("typeof(n) = " + typeof(n));
即使您输入数值,上面的代码也会显示&#34; typeof(n)= string&#34;。
您必须将字符串转换为数字。
var howMany = prompt("How many numbers?");
var myArray = [];
for (var i = 0; i < howMany; i++) {
myArray.push(parseInt(prompt("Enter a number"), 10));
}
答案 1 :(得分:2)
提示功能会保存字符串,因此问题在于您尝试将字符串的总和。只需在add函数中添加一个类型转换,脚本就可以正常工作:
function add(array) {
var f = 0;
var length = array.length;
for (i = 0; i < length; i++) {
f += parseInt(array[i]);
}
}
答案 2 :(得分:0)
var howMany = prompt("How many numbers?"),
myArray = [];
for (var i = 0; i < howMany; i++) {
myArray.push(parseInt(prompt("Enter a number"),10));
}
function isDataUniform(array) {
for (i = 0; i < array.length; i++) {
if (typeof array[i] !== "number") {
return false;
}
}
return true;
}
function add(array) {
var f = 0;
var length = array.length;
for (i = 0; i < length; i++) {
f += array[i];
}
alert("Result of addition of this set: " + myArray + " is: " + f);
}
if (isDataUniform(myArray) === true) {
add(myArray);
} else {
console.log("can't do adding");
}