[4] @老虎会游泳,在这段代码中,arrayParts函数接受一个数组arr和一个整数n作为参数,然后将数组分成尽可能相等的n个部分。函数使用splice方法来移除arr中的元素,并将移除的元素打印出来。需要注意的是,splice方法会修改原始数组。
首先,您在console.log中使用slice方法,它不会修改myArr的值,而是返回一个新数组,包含原数组的指定范围内的元素。在这个示例中,您将数组分成了4个部分,但这些操作并不会改变myArr的值。
接下来,您调用了arrayParts(myArr, 5)。这里,n的值是5,所以partSize的值是Math.ceil(11 / 5),即3。因此,函数将myArr分成3个元素的部分。以下是循环的迭代过程:
- 第一次迭代:
begin=0, end=3,splice移除了索引0到2的元素,myArr变为[4, 5, 6, 7, 8, 9, 10, 11]。
- 第二次迭代:
begin=3, end=6,但由于myArr的长度已经减少,此时实际上begin=3, end=6,splice移除了索引3到5的元素,myArr变为[4, 5, 6, 11]。
- 第三次迭代:
begin=6, end=9,由于myArr的长度为4,此时循环停止。
在执行完arrayParts(myArr, 5)之后,myArr的值为[4, 5, 6, 11]。
以下是打印输出的结果:
[ 1, 2, 3 ]
[ 4, 5, 6 ]
[ 7, 8, 9 ]
[ 10, 11 ]
myArr= [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]
before begin= 0 end= 3 arr.length= 11 arr= [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]
[ 1, 2, 3 ]
after begin= 0 end= 3 arr.length= 8 arr= [ 4, 5, 6, 7, 8, 9, 10, 11 ]
before begin= 3 end= 6 arr.length= 8 arr= [ 4, 5, 6, 7, 8, 9, 10, 11 ]
[ 7, 8, 9 ]
after begin= 3 end= 6 arr.length= 4 arr= [