第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

ES6-10 入門(mén)教程

ES6+ copyWithin()

1. 前言

在 ES5 中沒(méi)有對(duì)數(shù)組內(nèi)元素的復(fù)制和替換,如果要實(shí)現(xiàn)數(shù)組內(nèi)的替換需要針對(duì)性的操作。而在 ES6 中提供了 copyWithin 方法輕易地實(shí)現(xiàn)數(shù)組內(nèi)元素的復(fù)制,不會(huì)改變?cè)瓟?shù)組的長(zhǎng)度。

2. 方法詳情

2.1 基本語(yǔ)法

copyWithin 復(fù)制原數(shù)組指定的項(xiàng),從 startend 之間的元素;然后替換原數(shù)組指定的位置,從 target 開(kāi)始替換。原數(shù)組的長(zhǎng)度不會(huì)被改變。

使用語(yǔ)法:

arr.copyWithin(target[, start[, end]])

參數(shù)解釋?zhuān)?/strong>

參數(shù) 描述
target (必須,可以不填)開(kāi)始替換數(shù)據(jù)的起始索引位置,復(fù)制元素到該位置;如果是負(fù)數(shù)時(shí),target 將從末尾開(kāi)始計(jì)算
start (可選)開(kāi)始復(fù)制的起始位置;如果是負(fù)數(shù)時(shí),start 將從末尾開(kāi)始計(jì)算。如果被省略,則會(huì)從 0 開(kāi)始復(fù)制
end (可選)開(kāi)始復(fù)制元素的結(jié)束位置,不包括 end 位置;如果是負(fù)數(shù),end 將從末尾開(kāi)始計(jì)算

2.2 一個(gè)參數(shù)

當(dāng)?shù)谝粋€(gè)參數(shù)是 0 或者沒(méi)有參數(shù)時(shí)會(huì)復(fù)制整個(gè)數(shù)組,并從起始位置開(kāi)始替換復(fù)制的數(shù)據(jù)。

var arr = [1, 2, 3, 4, 5];
arr.copyWithin(0);      // [1, 2, 3, 4, 5]
arr.copyWithin();       // [1, 2, 3, 4, 5]

上面的代碼中,第一個(gè)參數(shù)是 0,會(huì)從第一個(gè)位置的元素開(kāi)始復(fù)制整個(gè)數(shù)組,然后替換整個(gè)數(shù)組,所以數(shù)組沒(méi)有變,0 可以省略不填。沒(méi)有參數(shù)時(shí)默認(rèn)第一個(gè)參數(shù)是 0。當(dāng)?shù)谝粋€(gè)參數(shù)大于 0時(shí),看如下示例:

[1, 2, 3, 4, 5].copyWithin(2);      // [1, 2, 1, 2, 3]
[1, 2, 3, 4, 5].copyWithin(6);      // [1, 2, 3, 4, 5]

上面的代碼中,第一個(gè)參數(shù)大于 0,復(fù)制整個(gè)數(shù)組從指定的位置替換,如果參數(shù)大于數(shù)組的長(zhǎng)度時(shí),則返回原數(shù)組。

var arr = [1, 2, 3, 4, 5];
arr.copyWithin(-2);     // [1, 2, 3, 1, 2]

上面的代碼中,參數(shù)小于 0 時(shí),則從末尾開(kāi)始計(jì)算起始替換的位置,在上面的例子中起始的位置的值是 3,則從此項(xiàng)開(kāi)始替換。

2.2 兩個(gè)參數(shù)

第二個(gè)參數(shù)是,開(kāi)始復(fù)制數(shù)組的起始位置,因?yàn)闆](méi)有第三個(gè)參數(shù),所以結(jié)尾是數(shù)組的最后一項(xiàng)。

var arr = [1, 2, 3, 4, 5];
arr.copyWithin(0, 3);     // [4, 5, 3, 4, 5]

上面的代碼中,起始位置是 3 則復(fù)制的數(shù)組是 [4, 5],替換的起始位置是 0,所以替換數(shù)組中的第一項(xiàng)和第二項(xiàng)的值。

var arr = [1, 2, 3, 4, 5];
arr.copyWithin(0, -3);     // [3, 4, 5, 4, 5]

上面的代碼中,代碼第二個(gè)參數(shù)是 - 3,start 將從末尾開(kāi)始計(jì)算,會(huì)復(fù)制 [3, 4, 5],然后從數(shù)組的起始位置開(kāi)始替換。

2.2 三個(gè)參數(shù)

第三個(gè)參數(shù)是開(kāi)始復(fù)制元素的結(jié)束位置,但是不包括這個(gè)位置。

var arr = [1, 2, 3, 4, 5];
arr.copyWithin(1, 3, 4);     // [1, 4, 3, 4, 5]

上面的代碼中,可以知道復(fù)制的元素是數(shù)組中的 4,然后從第二個(gè)元素開(kāi)始替換。

[1, 2, 3, 4, 5].copyWithin(1, 3, -4);     // [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5].copyWithin(0, -2, -1);    // [4, 2, 3, 4, 5]

上面的代碼中,第三個(gè)參數(shù)是負(fù)值,則從末尾開(kāi)始計(jì)算。只有第三個(gè)參數(shù)是負(fù)數(shù)時(shí),不會(huì)賦值任何元素,所以會(huì)返回原數(shù)組。這里要注意的是,在起始和結(jié)束位置之間有沒(méi)有數(shù)據(jù)可以被復(fù)制,上面第二個(gè)例子,在 - 2 和 - 1 之間只有 4,所以會(huì)替換原數(shù)組中的起始位置的值。

3. 小結(jié)

本節(jié)講解了數(shù)組的 copyWithin 方法的使用,主要注意的是在參數(shù)為負(fù)值的幾種情況,特別是在起始和結(jié)束的參數(shù)為負(fù)值時(shí),它們是從數(shù)組的結(jié)尾開(kāi)始計(jì)算的,而且要看起始和結(jié)束之間有沒(méi)有值可以被復(fù)制,如果沒(méi)有則原數(shù)組中的元素不會(huì)被替換,則返回原數(shù)組。