使用迭代器创建数组

44 阅读1分钟

不使用循环创建指定长度的数组,且使数组中的元素等于当前索引值。

迭代器介绍:

迭代器是ES6提出的新规范,在ES6中只有实现迭代器才能使用for of进行遍历。在遍历时会调用next方法,next方法返回{ value: ##, done: true/false }对象,每次迭代都会拿出value,且当done为true时代表迭代已完成。实现此题可根据此特质进行实现。代码如下:

function createArray(length) {
    const self = {}
    self[Symbol.iterator] = function () {
        let i = 0;
        return {
            next: function () {
                return {
                    value: i++,
                    done: i > length
                }
            }
        }
    }
    return self;
}

使用方法如下:

// ...会自动调用迭代器
const arr = [...createArray(5)];
console.log(arr);