javascript 向数组添加n个空字符串

书写文章起因

在最近的抽奖活动开发里,有这么个需求:
接口返回不定数量(length<=9)的奖品数组,前端这边要循环展示长度为9的奖品数组。
so,开始我们今天的正题,添加空字符串数组。

方案1、splice + while
const a = [ 1, 2, 3 ];
while( a.length < 9 ){ a.splice(0, 0, ''); } 

// a结果是: [ '', '', '', '', '', '', 1, 2, 3 ]
方案2、for + push
const a = [ 1, 2, 3 ];
const n = 9 - a.length;
for( let i = 0; i < n; i++  ){ a.push( '' ); }

// a的结果:[ 1, 2, 3, '', '', '', '', '', '' ]
方案3、Array.prototype.fill()

Array.fill是 ES6 新增的方法,它可以帮助你填充数组。
定义:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。

// 将原数组的每一个元素填充成 fill 传入的值。
[1,2,3,4].fill(6)  
// => [6,6,6,6]

它支持传入三个参数: fill(value, start, end)
value:用来填充数组元素的值。
start:可选 起始索引,默认值为0。
end:可选 终止索引,默认值为 this.length。

[1, 2, 3].fill(4)            // [4, 4, 4]
[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, -2)    // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN)  // [1, 2, 3]
Array(3).fill(4);            // [4, 4, 4]

所以第三种方案是:

const a = [ 1, 2, 3 ];
a.concat( Array( 9-a.length ).fill( '' ) );  

// a 的结果为:[1, 3, 9, "", "", "", "", "", ""]

 上一篇
抽奖转盘实现 ( vue + js + html + less ) 抽奖转盘实现 ( vue + js + html + less )
书写文章起因 活动策划人员策划这个抽奖页面,用于app内。当时,这个转盘布局我踩坑了,我本以为这么简单的布局应该不用绝对定位的,是我想多了!然后改为绝对定位来实现,因为要简单些。 一、九个格子和开始按钮,页面布局的实现思路这个用绝对定位
2017-12-08
下一篇 
Chrome Extension开发问题总结 Chrome Extension开发问题总结
css在HTML文件里,css可以内嵌、可以内部样式表、也可以外链引入。 jsjs就要注意了!! js不支持inline javascript 只能引入外部js文件 按照下面两种错误方式会出现如图错误: 错误做法1: <inpu
2017-10-06
  目录