From d660de64af0081898cff669ed322e651c0d61619 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 6 Sep 2015 21:10:20 +0800 Subject: [PATCH] add array/copywithin --- docs/array.md | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/docs/array.md b/docs/array.md index 5e3ec7e..ce4d5ef 100644 --- a/docs/array.md +++ b/docs/array.md @@ -110,6 +110,51 @@ function ArrayOf(){ } ``` +## 数组实例的copyWithin() + +数组实例的copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。 + +它接受三个参数。 + +- target(必需):从该位置开始复制数据。 +- start(必需):从该位置开始读取数据。如果为负值,表示倒数。 +- end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。 + +这三个参数都应该是数值,如果不是,会自动转为数值。 + +```javascript +[1, 2, 3, 4, 5].copyWithin(0, 3) +// [4, 5, 3, 4, 5] +``` + +上面代码表示将从3号位直到数组结束的成员(4和5),复制到从0号位开始的位置,结果覆盖了原来的1和2。 + +下面是更多例子。 + +```javascript +// 将3号位复制到0号位 +[1, 2, 3, 4, 5].copyWithin(0, 3, 4) +// [4, 2, 3, 4, 5] + +// -2相当于3号位,-1相当于4号位 +[1, 2, 3, 4, 5].copyWithin(0, -2, -1) +// [4, 2, 3, 4, 5] + +// 将3号位复制到0号位 +[].copyWithin.call({length: 5, 3: 1}, 0, 3) +// {0: 1, 3: 1, length: 5} + +// 将2号位到数组结束,复制到0号位 +var i32a = new Int32Array([1, 2, 3, 4, 5]); +i32a.copyWithin(0, 2); +// Int32Array [3, 4, 5, 4, 5] + +// 对于没有部署TypedArray的copyWithin方法的平台 +// 需要采用下面的写法 +[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4); +// Int32Array [4, 2, 3, 4, 5] +``` + ## 数组实例的find()和findIndex() 数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。 @@ -168,10 +213,8 @@ new Array(3).fill(7) fill()还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。 ```javascript - ['a', 'b', 'c'].fill(7, 1, 2) // ['a', 7, 'c'] - ``` ## 数组实例的entries(),keys()和values()