奋斗30天Javascript之ECMAScript 6 入门之fill() (part22)

本文摘抄自阮一峰老師的《ECMAScript 6 入门》一文

fill()

定义和用法

fill() 方法用于将一个固定值替换数组的元素。

注意: IE 11 及更早版本不支持 fill() 方法。

语法

array.fill(value, start, end)

 參考:

栗子一:

<p>点击按钮使用 “Runoob” 填充所有数组元素。</p>
<button onclick="myFunction()">点我</button>
<p id="demo"></p>
<p><strong>注意:</strong> IE 11 及更早版本不支持 fill() 方法。</p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {  
    document.getElementById("demo").innerHTML = fruits.fill("Runoob",2,3);
}
</script>

 點擊點我之後:

 解釋:這個開始位置在length的0開始數第二位到第三位填充結束。就是從APPlE到Mango(但是不包括Mango)處填充Runoob。如果不寫後面2個參數則會都填充成Runoob。

下面詳細列子:

['a', 'b', 'c'].fill(7)
// [7, 7, 7]

new Array(3).fill(7)
// [7, 7, 7]

上面代码表明,fill方法用于空数组的初始化非常方便。数组中已有的元素,会被全部抹去。

fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。

['a', 'b', 'c'].fill(7, 1, 2)
// ['a', 7, 'c']

上面代码表示,fill方法从 1 号位开始,向原数组填充 7,到 2 号位之前结束。

注意,如果填充的类型为对象,那么被赋值的是同一个内存地址的对象,而不是深拷贝对象。

let arr = new Array(3).fill({name: "Mike"});
arr[0].name = "Ben";
arr
// [{name: "Ben"}, {name: "Ben"}, {name: "Ben"}]

let arr = new Array(3).fill([]);
arr[0].push(5);
arr
// [[5], [5], [5]]

猜你喜欢

转载自blog.csdn.net/weixin_41406727/article/details/88843743