首先需要声明的是该属性在IE11及以下版本的浏览器中会报错
let arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(arr1.copyWithin(2, 3, 5));
//结果是[1,2,4,5,5,6,7,,8,9,10]
arr . copywithin(),括号内接3个参数,包括一个必须和两个可选,
第一个参数为必须填写的值,表示复制(copy)的目标位置,由于下标是从0开始的,所以上述2的位置应该是‘’3‘’,
第二个数为复制对象的起始位置,上述为3,根据下标我们能得到该对应位置为'‘4’‘,
第三个参数为复制对象的结束位置,如果不填写该参数,则默认自第二参数位置后所有的元素,按上述例子的话则是’4‘’5‘‘6’‘7’‘8’‘9’‘10’,第三个参数若给具体值则取区间值(这里我们让第二个参数的值为a,第三个参数的值为b,则该取值区间为【a,b),即>=a而
最后就是执行了,由于该方法返回的是原数组,因此该方法会改变原数组元素,
案例分析则是:将【3,5)替换‘’2‘’,即把,3替换成4,5,
注意!虽然第一个参数只有一位被选中,但是第二三个参数所产生的取值区间内的元素可能会不只一个,因此在替换时,会将原来数组内相同的元素整体替换(即虽然只选择了3,但是复制对象为4,5,因此原本的3,4位置便被4,5代替了。)
以下为关系图:
第一次:arr1=【1,2,3,4,5,6,7,8,9,10】
第二次:arr1=【1,2,3,4,5,6,7,8,9,10】
第三次:arr1=【1,2,3,4,5,6,7,8,9,10】
第四次:arr1=[1,2,(4,5),4,5,6,7,8,9,10]
第五次:arr1=【1,2,(4,5),5,6,7,8,9,10】
第六次:arr1=【1,2,4,5,5,6,7,8,9,10】
以上为博主一些笔记和分析,如需互动请关注博主私聊哦!