【问题标题】:Why is the final value undefined for the for loop?为什么 for 循环的最终值未定义?
【发布时间】:2021-02-19 05:36:34
【问题描述】:

我是 JavaScript 新手,在练习时我无法弄清楚为什么我的 oddPairs 数组中的最后一个值在循环结束时返回 undefined

const people = 56;
let numberGenerator = 0
let tickets = [];
let evenPais = [];
let oddPairs = [];

for (let counter = 1; counter <= people; counter++){
    let numberGenerator = Math.ceil(Math.random() *56);
    tickets.push(numberGenerator);
}

for (let i = 1; i <= people; i++){
    if (tickets[i] % 2 === 0){
        evenPais.push(tickets[i]);
    }else {
        oddPairs.push(tickets[i]);
    }
}

console.log(evenPais);
console.log(oddPairs);
console.log(evenPais.length + oddPairs.length);

【问题讨论】:

  • 数组索引从零开始。

标签: javascript arrays for-loop


【解决方案1】:

你的代码:

for (let i = 1; i <= people; i++){

解决方案:

for (let i = 0; i < people; i++){

【讨论】:

  • for (let i = 1; i
  • @Wajid 除了省略tickets中的第一个元素
【解决方案2】:

试试这个。数组总是以 0 开始,以 n - 1 结束。

const people = 56;
let numberGenerator = 0
let tickets = [];
let evenPais = [];
let oddPairs = [];

for (let counter = 1; counter <= people; counter++){
    let numberGenerator = Math.ceil(Math.random() *56);
    tickets.push(numberGenerator);
}

for (let i = 0; i < people; i++){
    if (tickets[i] % 2 === 0){
        evenPais.push(tickets[i]);
    }else {
        oddPairs.push(tickets[i]);
    }
}

console.log(evenPais);
console.log(oddPairs);
console.log(evenPais.length + oddPairs.length);

【讨论】:

  • 不确定,你可以从 1 开始数组,这里的问题是他在循环中放入了 equal
  • 在这种情况下,直到您执行 index-1 才能获得第一个索引值
【解决方案3】:

您必须从零开始您的数组索引(在您的情况下为 Counter),并在 Counter 等于 People -1 时结束您的循环。

【讨论】:

  • 可以从1开始没问题如果你从1开始只需要设置i
【解决方案4】:

这是因为你添加了错误的循环条件

这意味着你的条件for (let i = 1; i &lt;= people; i++){ 它意味着它将在数组的最后一个索引处运行,所以假设你的数组长度是 3 但数组中的索引从 0 所以现在它会在 2 上结束,此时 3 这里 i 现在是 3,所以条件为真,循环将运行并且当循环进入然后它发现未定义索引意味着 3 不是你的数组的索引

解决办法是

你需要像这样设置for (let i = 1; i &lt; people; i++){ 现在在最后一次迭代时 i=3 3 那么这个条件会是假的,现在循环会中断

希望这将有助于您了解循环的工作原理

【讨论】:

  • for (let i = 1; i &lt; people; i++) 不会通过 tickets[0] 所以 evenPais.length + oddPairs.length 将是 55 而不是 56
猜你喜欢
  • 1970-01-01
  • 2018-10-02
  • 2015-12-16
  • 2017-07-14
  • 2021-04-12
  • 2020-07-08
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多