ES6+ copyWithin()教程介绍
发布时间:2023-03-24 14:25:51 所属栏目:教程 来源:
导读:在 ES5 中没有对数组内元素的复制和替换,如果要实现数组内的替换需要针对性的操作。而在 ES6 中提供了 copyWithin 方法轻易地实现数组内元素的复制,不会改变原数组的长度。
copyWithin 复制原数组指定的项,从
copyWithin 复制原数组指定的项,从
在 ES5 中没有对数组内元素的复制和替换,如果要实现数组内的替换需要针对性的操作。而在 ES6 中提供了 copyWithin 方法轻易地实现数组内元素的复制,不会改变原数组的长度。 copyWithin 复制原数组指定的项,从 start 到 end 之间的元素;然后替换原数组指定的位置,从 target 开始替换。原数组的长度不会被改变。 使用语法: arr.copyWithin(target[, start[, end]]) 参数解释: 参数 描述 target (必须,可以不填)开始替换数据的起始索引位置,复制元素到该位置;如果是负数时,target 将从末尾开始计算 start (可选)开始复制的起始位置;如果是负数时,start 将从末尾开始计算。如果被省略,则会从 0 开始复制 end (可选)开始复制元素的结束位置,不包括 end 位置;如果是负数,end 将从末尾开始计算 当第一个参数是 0 或者没有参数时会复制整个数组,并从起始位置开始替换复制的数据。 var arr = [, , , , ]; arr.copyWithin(); // [1, 2, 3, 4, 5] arr.copyWithin(); // [1, 2, 3, 4, 5] 上面的代码中,第一个参数是 0,会从第一个位置的元素开始复制整个数组,然后替换整个数组,所以数组没有变,0 可以省略不填。没有参数时默认第一个参数是 0。当第一个参数大于 0时,看如下示例: [, , , , ].copyWithin(); // [1, 2, 1, 2, 3] [, , , , ].copyWithin(); // [1, 2, 3, 4, 5] 上面的代码中,第一个参数大于 0,复制整个数组从指定的位置替换,如果参数大于数组的长度时,则返回原数组。 var arr = [, , , , ]; arr.copyWithin(-); // [1, 2, 3, 1, 2] 上面的代码中,参数小于 0 时,则从末尾开始计算起始替换的位置,在上面的例子中起始的位置的值是 3,则从此项开始替换。 第二个参数是,开始复制数组的起始位置,因为没有第三个参数,所以结尾是数组的最后一项。 var arr = [, , , , ]; arr.copyWithin(, ); // [4, 5, 3, 4, 5] 上面的代码中,起始位置是 3 则复制的数组是 [4, 5],替换的起始位置是 0,所以替换数组中的第一项和第二项的值。 var arr = [, , , , ]; arr.copyWithin(, -); // [3, 4, 5, 4, 5] 上面的代码中,代码第二个参数是 - 3,start 将从末尾开始计算,会复制 [3, 4, 5],然后从数组的起始位置开始替换。 第三个参数是开始复制元素的结束位置,但是不包括这个位置。 var arr = [, , , , ]; arr.copyWithin(, , ); // [1, 4, 3, 4, 5] 上面的代码中,可以知道复制的元素是数组中的 4,然后从第二个元素开始替换。 [, , , , ].copyWithin(, , -); // [1, 2, 3, 4, 5] [, , , , ].copyWithin(, -, -); // [4, 2, 3, 4, 5] 上面的代码中,第三个参数是负值,则从末尾开始计算。只有第三个参数是负数时,不会赋值任何元素,所以会返回原数组。这里要注意的是,在起始和结束位置之间有没有数据可以被复制,上面第二个例子,在 - 2 和 - 1 之间只有 4,所以会替换原数组中的起始位置的值。 本节讲解了数组的 copyWithin 方法的使用,主要注意的是在参数为负值的几种情况,特别是在起始和结束的参数为负值时,它们是从数组的结尾开始计算的,而且要看起始和结束之间有没有值可以被复制,如果没有则原数组中的元素不会被替换,则返回原数组。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |