| 1 min read

最近在项目里遇到了这种问题,大概就简单写下解题思路吧。

给出指定长度 n 然后创建一个该长度的的空字符串数组。比如 n=3; 输出应该是 ['', '', ''];比如 n = 2; 输出应该是 ['', ''];

使用 for

大概这个思路,就是最简单的也很容易让人作为垫底方案的实现;

var a = [];
for (let i=0; i < 3;i++) {
	a.push('');
}

使用字符串的分割

充分利用 join 方法

Array(3).join('.').split('.');

使用 Array.prototype.fill()

Array.fill 是 ES6 新增的方法,它可以帮助你填充数组。将原数组的每一个元素填充成 fill 传入的值。

[1,2,3].fill(1) 
// => [1,1,1]

它支持传入三个参数:
fill(val, start, end)
@param val 传入的值
@param start 传入的索引
@param end 结束的索引

[1, 2, 3].fill(4, 1);            // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1);         // [1, 2, 3]
[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
[1, 2, 3].fill(4, 3, 5);    

所以这个时候答案就很清晰了:

Array(3).fill('');

这是一个开放性问题,读者有什么更好的思路也可以留言交流。

扩展阅读

You Can Speak "Hi" to Me in Those Ways