使用展开运算符 …
使用展开运算符结构字符串可以快速获得一个数组,例如:
const foo = [..."abc"]; // ["a", "b", "c"];
如果想生成多项,可以配合 padEnd 或者 padStart,例如:
const foo = [...''.padEnd(10)]; // [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
增加数字原型迭代器(不推荐但很牛批)
这种方式不是很友好,改变了数字类型的原型,但是你看到代码绝对很惊艳。
众所周知,展开运算符不能展开数字,比如:
const foo = [...100]; // throw Error: Uncaught TypeError: 100 is not iterable
这是因为数字类型原型上没有迭代器。
既然没有,我们可以手动加上:
Number.prototype[Symbol.iterator] = function* () {
const v = this.valueOf();
if(v > 0)
for(let i = 0; i < v; i++) {
yield i;
}
}
把上面的代码加到全局上,那么神奇的解构就出现了:
const foo = [...1000]; // [0, 1, 2, ... 998, 999]
此时可以对数字进行解构,拿到长度和数字一样的数组。
!!! 重要提醒,不要这么写代码,这属于奇淫技巧。这改变了 js 的默认标准。