两个代码块分开工作但不在一起,我在哪里犯错?

时间:2016-09-06 00:02:39

标签: javascript arrays

为什么以下工作正常:

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);
}

你能帮我纠正吗?

3 个答案:

答案 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");
}