从ES6生成器创建多维数组

时间:2017-11-05 18:33:47

标签: javascript arrays matrix ecmascript-6 generator

这是一个创建普通数组的生成器。创建多维数组的最快方法是什么?

let seq = [...makeSequence(100)];

* makeSequence(max) {
   for (let i = 0; i < max; i++) {
     yield i;
   }
}

1 个答案:

答案 0 :(得分:0)

如果迭代器应该返回顶层元素(它们本身就是数组),那么你可以使用递归,因此支持任何深度的数组嵌套:

function * makeSequence(max, dimensionCount = 1) {
   for (let i = 0; i < max; i++) {
     yield dimensionCount <= 1 ? i : [...makeSequence(max, dimensionCount-1)];
   }
}

let seq = [...makeSequence(5, 2)];

console.log(seq);