用户输入未正确存储在阵列中

时间:2019-06-23 20:52:47

标签: javascript

我承担了将10个元素存储在一个数组中的任务,那么我必须添加所有这些元素。

我的问题是在数组中存储每个单独的元素时出现的。 当我将for循环的长度设置为numbers.length时,它将使用输入的第一个数字填充数组,如果将长度设置为10,则仅将值放在index [0]中,而将其他值保留为未定义。

var numbers = new Array();
function addnew() {
var un = document.getElementById('userNumber').value;

for (var i = 0; i < 10; i++) {
     numbers.push(" " + un[i]);
}

console.log(numbers);
document.getElementById('elements').innerHTML = numbers;

期望的输出是一个列表,该列表显示用户输入到数组中的值(长度为10)以及这些值的总和。 它实际显示的是第一个输入的数字,然后是未定义的数字,直到达到最大长度10。

3 个答案:

答案 0 :(得分:0)

这是因为un字符串长度为1,因为它没有完全保存

var numbers = new Array();
function addnew() {
var un = '123';

for (var i = 0; i < Math.min(10,un.length); i++) {
     numbers.push(" " + un[i]);
}

console.log(numbers);
document.getElementById('elements').innerHTML = numbers;
}


}

答案 1 :(得分:0)

如果用户在每个数字之间输入一个空格,则可以将一个字符串拆分成一个数组。

numbers = un.split(" ");

数字现在包含一个字符串数组。

然后将字符串转换为数字,以便获得总和。

for (var i = 0; i < numbers.length; i++) {
    numbers[i] = Number(numbers[i]);
}

然后这将给您总和。

sumOfNumbers = numbers.reduce((a, b) => a + b, 0);
console.log(sumOfNumbers);

un = "1 2 3 12";
numbers = un.split(" ");
console.log(numbers);
for (var i = 0; i < numbers.length; i++) {
    numbers[i] = Number(numbers[i]);
}
console.log(numbers);
sumOfNumbers = numbers.reduce((a, b) => a + b, 0);
console.log("sum is " + sumOfNumbers);

答案 2 :(得分:-1)

开始时,您的numbers.length为0。我认为您应该un.length

function addnew() {
  var numbers = [];
  var un = document.getElementById('userNumber').value;

  for (var i = 0; i < un.length; i++) {
       numbers.push(" " + un[i]);
  }

  console.log(numbers);
  document.getElementById('elements').innerHTML = numbers;
}
<input type="text" id="userNumber" onChange="addnew()"/>

<span id="elements"></span>