【问题标题】:generate object from a range get null on first iteration从范围生成对象在第一次迭代时为空
【发布时间】:2018-07-07 06:44:54
【问题描述】:

我的循环有什么问题?第一次迭代有null?

generateRewardOptions = () => {
        let options = []
        const max = 20

        for(let i = 1; i <= max; i++){
            options[i] = {
                key: i,
                value: i,
                text: i
            }
        }

        return options
    }

console.log(JSON.stringify(generateRewardOptions()));

https://jsbin.com/cupelanotu/edit?html,js,console,output

【问题讨论】:

  • 替代:Array.from({length: 20}, (el, i) =&gt; ({key: i, value: i, text: i}));

标签: javascript


【解决方案1】:

问题是你从 1 开始循环,而应该从 0 开始。

从 0 更改 for 并排除 max 应该可以解决问题:

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

JavaScript 数组是基于 0 的

【讨论】:

  • 好收获。只要确保在循环中使用i+1
  • 但仅在必要时,索引仍应保持i
【解决方案2】:

除了 smnbbrv 建议之外,另一个选择是在循环中使用 push

for(let i = 1; i <= max; i++) {
    options.push({
        key: i,
        value: i,
        text: i
    });
}

然后你不必从i=0开始。

【讨论】:

猜你喜欢
  • 2018-06-21
  • 2020-07-01
  • 2011-10-28
  • 2011-01-13
  • 2011-01-13
  • 2019-11-19
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
相关资源
最近更新 更多