如何将所有项目保留在数组函数中?使用Javascript

时间:2017-04-15 20:31:50

标签: javascript arrays

如何将函数getNum()中输入的所有数字放入finalArr Array,而不将var finalArr = [];移到其所在的函数之外?目前,无论我运行脚本多少个周期,它只显示我输入的最后一个数字。

function getNum () {

     do {    
         number = Number(prompt("Enter a number:"));
     }
     while (number < 0);

     return number;

}

function finalArray () {

    var finalArr = [];
    finalArr.unshift(number);
    alert(finalArr);

    return;
}

do {
     getNum();
     finalArray();
     var no = prompt("Enter n to stop");
}
while (no != "n");

2 个答案:

答案 0 :(得分:0)

你必须在你的getNum()方法中调用你的finalArry()方法,然后从do循环中删除它。

答案 1 :(得分:0)

为什么不使用递归函数而不是while循环?

查看下一个代码:

&#13;
&#13;
var array = [];

function getNum () {

  var no = prompt("Enter n to stop");

  if (no === "n") {

    console.log("the final array is");
    console.log(array);

  } else {

    array.push(no);

    getNum();

  }

}

getNum();
&#13;
&#13;
&#13;

编辑:我不明白为什么要在函数内声明Array,函数内声明的每个变量都只存在于该范围内。但是如果有必要,可以将Array值传递给函数,声明函数内的Array获取已经传递的值并返回结果Array,它有点棘手,但它确实有效:

&#13;
&#13;
var array;

function finalArray(array, number) {

  var finalArr = array || [];

  finalArr.push(number);

  return finalArr;
}

function getNum() {

  var no = prompt("Enter a number. Enter n to stop");

  if (no === "n") {

    console.log("the final array is");
    console.log(array);

  } else {

    array = finalArray(array, +no);

    getNum();

  }

}

getNum();
&#13;
&#13;
&#13;