推送未定义的语法错误JS

时间:2016-12-01 20:39:28

标签: javascript arrays push

我需要创建一个程序,要求用户输入一个存储在数组中的值,并继续询问要添加的值,直到他们没有更多要输入数组的数字。之后我必须输出不包含零的数组(它们允许输入零,所以我必须从输出中过滤掉它们)并返回数组的总和。我当前对我的程序的问题是arr.push(x)当前正试图在函数arrin中推送一个未定义的值。我感觉好像有一个更好的方式来解决这个问题,而不是我现在正在努力,所以我需要全力以赴。

var x = parseInt(prompt("Enter a number, to exit enter NaN", "0"), 10);

var y = arrin(x); 

var arr = [];

var s;

function arrin(x) {

if(x != NaN){
    arr.push(x)
    x = parseInt(prompt("Enter a number, to exit enter NaN", "0"), 10); 
    y = arrin(x);
}else{
    document.write("<p>"+arr.toString()+"</p>");
    s = sum(arr);
    doucment.write("<p> The sum of all elements in the array is "+s+"</p>");
}

}

1 个答案:

答案 0 :(得分:0)

x != NaN无效。

!isNaN(x)将检查var是否为数字。

x != "NaN"将检查文字是否按字面意思&#34; NaN&#34;

最后两个中的任何一个都可以。

&#13;
&#13;
var arr = [];
var y = arrin(0);
var s;

function arrin(x) {

  if (!isNaN(x)) {
    if (x != 0) arr.push(x)
    x = parseInt(prompt("Enter a number, to exit enter NaN", "0"), 10);
    y = arrin(x);
  } else {
    document.write("<p>" + arr.toString() + "</p>");
    s = sum();
    document.write("<p> The sum of all elements in the array is " + s + "</p>");
  }
}

function sum() {
  var t = 0;
  for (var i = arr.length; i--;) t += parseInt(arr[i]);
  return t;
}
&#13;
&#13;
&#13;