今天的挑战题目涉及到JavaScript中 slice
和 splice
方法的使用。这两个方法名称相似,但它们的功能和对数组的影响却截然不同。我们一起来分析这段代码,看看它会输出什么以及为什么。
代码解析
首先,来看这段代码的初始部分:
const arr = [1, 2, 3, 4, 5];
我们创建了一个数组 arr
,包含5个元素 [1, 2, 3, 4, 5]
。
接下来,我们分别调用了 slice
和 splice
方法:
const sliced = arr.slice(1, 3);
slice
方法返回一个新的数组,它从原数组中提取了从索引 1
到(但不包括)索引 3
的元素。原数组 arr
不会受到 slice
操作的影响。
在这行代码中,slice(1, 3)
返回了 [2, 3]
,因为它提取了 arr
中的第2个和第3个元素。
const spliced = arr.splice(1, 3);
splice
方法则是一个对原数组有破坏性影响的操作。它从原数组中删除从索引 1
开始的3个元素,并返回一个包含删除元素的新数组。
在这行代码中,splice(1, 3)
从 arr
中删除了第2个、第3个和第4个元素(即 2
, 3
, 4
),返回 [2, 3, 4]
,同时原数组 arr
变成了 [1, 5]
。
让我们来看看最终的输出结果:
console.log(sliced, spliced, arr);
根据前面的分析:
sliced
是[2, 3]
,因为slice
返回了从原数组中提取的部分内容,不改变原数组。spliced
是[2, 3, 4]
,因为splice
删除了原数组中的这部分内容,并返回了它们。arr
是[1, 5]
,因为splice
修改了原数组,删除了中间的三项元素。
所以,最终的输出是:
[2, 3] [2, 3, 4] [1, 5]
结束
这道题目展示了 slice
和 splice
方法在JavaScript中的不同作用。slice
只是创建一个原数组的浅拷贝,不改变原数组,而 splice
则是直接修改原数组,并返回被删除的部分。理解这两个方法的不同之处对于正确使用它们至关重要。你答对了吗?欢迎在评论区分享你的答案和想法!