JavaScript copyWithin()方法

admin發表於2018-09-03

此方法可以拷貝陣列內指定區間元素,然後使用拷貝的元素從指定位置開始替換。

為了加深記憶,分析一下此方法的名字copyWithin,由單詞copy與within。

copy是拷貝的意思,within是在指定結構內部的意思。

正如名稱表面意思,此方法的拷貝和替換操作都在同一個陣列中進行。

此方法直接操作原陣列。

ES2015新增此方法。

關於ES5陣列內容可以參閱JavaScript Array 陣列一章節。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
arr.copyWithin(target, start[, end = this.length])

引數解析:

(1).target:必需,規定從陣列何處開始進行替換。

(2).start:必需,規定從何處開始拷貝陣列元素。

(3).end:可選,規定從何處結束拷貝陣列元素,如果省略,則拷貝到陣列結尾。

瀏覽器相容:

(1).IE瀏覽器支援此方法。

(2).edge瀏覽器支援此方法。

(3).谷歌瀏覽器支援此方法。

(4).火狐瀏覽器支援此方法。

(5).opera瀏覽器支援此方法。

(6).safria瀏覽器支援此方法。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let arr = ["螞蟻部落","http://www.softwhy.com",6,"2015","奮鬥"];
let newArr=arr.copyWithin(0, 2);
console.log(newArr);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/03/104738ug3ekfzeaaamrba3.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼分析如下:

(1).從位置2出開始拷貝直到結尾,那麼拷貝陣列元素是6、2015和奮鬥。

(2).然後從位置0處開始進行替換原陣列內容。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let arr = ["螞蟻部落","http://www.softwhy.com",6,"2015","奮鬥"];
let newArr=arr.copyWithin(0, 3);
console.log(newArr===arr);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/03/104818mvxxhoxrfqraxc2o.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

返回值是true,說明此方法是直接操作原陣列。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let arr = ["螞蟻部落","http://www.softwhy.com",6,"2015","奮鬥"];
console.log(arr.copyWithin(-2, 3,-1));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/03/104854f3d88uwp8tolaw8z.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

此方法的三個引數都可以是負數,陣列第一個元素索引位置為0,那麼-1就是倒數一個元素,以此類推。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let i32a = new Int32Array([1, 2, 3, 4, 5]);
console.log(i32a.copyWithin(0, 2));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/03/104930zfadahbvzmwbzfvy.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到,此方法也可以用於二進位制陣列。

相關文章