Javascript 从范围生成对象在第一次迭代时获取null

Javascript 从范围生成对象在第一次迭代时获取null,javascript,Javascript,我的循环有什么问题?第一次迭代有空 generateRewardOptions = () => { let options = [] const max = 20 for(let i = 1; i <= max; i++){ options[i] = { key: i, value: i, text: i

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

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()));
generateRewardOptions=()=>{
让选项=[]
常数最大值=20

对于(设i=1;i问题在于,当循环应该从0开始时,从1开始循环

将for的值从0更改为最大值并将其排除应可解决以下问题:

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

JavaScript数组是基于0的

问题是当循环应该从0开始时,从1开始循环

将for的值从0更改为最大值并将其排除应可解决以下问题:

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

JavaScript数组是基于0的

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

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

for(让i=1;i除了smnbbrv建议的选项外,另一个选项是在循环中使用
push

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

for(让i=1;i好捕获。只需确保在循环中使用
i+1
,但仅在必要时,索引仍应保持
i
好捕获。只需确保在循环中使用
i+1
,但仅在必要时,索引仍应保持
i
可选:
数组。from({length:20},(el,i)=>({key:i,value:i,text:i});
备选方案:
Array.from({length:20},(el,i)=>({key:i,value:i,text:i}));
这在大数组上更容易,但可能会有性能问题,(比现代chrome上的直接赋值慢60%)链接不错。Thanks@smnbbrv此测试存在缺陷,不能反映Chrome中的真实阵列性能,请参阅。根据分析,这两种方法之间没有显著的性能差异。这更容易,但在大型阵列上可能会出现性能问题(比现代Chrome上的直接分配慢60%)链接不错。Thanks@smnbbrv这个测试是有缺陷的,不能反映Chrome中的真实阵列性能,请参阅。根据分析,这两种方法之间没有明显的性能差异。